@furkankoykiran/coderlegion-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@furkankoykiran/coderlegion-mcpcreate a new post announcing my new project"
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.
@furkankoykiran/coderlegion-mcp
TypeScript MCP server for CoderLegion — connect AI agents (Claude, Cursor, Cline) to the developer community platform.
Built with the official MCP TypeScript SDK, it exposes 13 tools covering post management, profile editing, content search, and social interactions — all accessible from any MCP-compatible client.
Features
Category | Tools |
Posts |
|
Profile |
|
Search |
|
Social |
|
Related MCP server: mcpcodeserver
Prerequisites
Node.js 20+ (
node --version)A CoderLegion account with valid session cookies
Installation
Option 1 — Run directly with npx (no install required)
CODERLEGION_PHPSESSID=xxx CODERLEGION_QA_SESSION=xxx npx @furkankoykiran/coderlegion-mcpOption 2 — Install globally from npm
npm install -g @furkankoykiran/coderlegion-mcp
CODERLEGION_PHPSESSID=xxx CODERLEGION_QA_SESSION=xxx coderlegion-mcpOption 3 — Install from GitHub Packages
npm install -g @furkankoykiran/coderlegion-mcp --registry=https://npm.pkg.github.com
CODERLEGION_PHPSESSID=xxx CODERLEGION_QA_SESSION=xxx coderlegion-mcpOption 4 — Build from source
git clone https://github.com/furkankoykiran/coderlegion-mcp.git
cd coderlegion-mcp
npm install
npm run build
node build/index.jsConfiguration
The server is configured entirely via environment variables — no config file needed.
Variable | Default | Description |
| (empty) | PHP session ID — required |
| (empty) | Q2A session cookie — required |
|
| Notice acknowledgement cookie |
Getting your cookies
Log in to coderlegion.com in your browser
Open Developer Tools (F12) > Application > Cookies >
https://coderlegion.comCopy the values for
PHPSESSIDandqa_session
MCP Client Setup
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"coderlegion": {
"command": "npx",
"args": ["-y", "@furkankoykiran/coderlegion-mcp"],
"env": {
"CODERLEGION_PHPSESSID": "your-php-session-id",
"CODERLEGION_QA_SESSION": "your-qa-session-value"
}
}
}
}VS Code (Cline / Continue)
Add to your MCP server settings:
{
"coderlegion": {
"command": "npx",
"args": ["-y", "@furkankoykiran/coderlegion-mcp"],
"env": {
"CODERLEGION_PHPSESSID": "your-php-session-id",
"CODERLEGION_QA_SESSION": "your-qa-session-value"
}
}
}Built from source
{
"coderlegion": {
"command": "node",
"args": ["/absolute/path/to/coderlegion-mcp/build/index.js"],
"env": {
"CODERLEGION_PHPSESSID": "your-php-session-id",
"CODERLEGION_QA_SESSION": "your-qa-session-value"
}
}
}Claude Code (CLI)
claude mcp add -s user coderlegion \
-e CODERLEGION_PHPSESSID=your-php-session-id \
-e CODERLEGION_QA_SESSION=your-qa-session-value \
-- npx -y @furkankoykiran/coderlegion-mcpAvailable Tools
Posts
create_post
Create a new post on CoderLegion. Supports Articles, Tutorials, Launches, and Videos with Markdown content, scheduling, and category-specific fields.
Note: CoderLegion enforces a maximum of 4 tags per post.
Parameter | Type | Required | Description |
| string | Yes | Post title |
| string | Yes | Post content in Markdown |
| string | Yes | Comma-separated tags, max 4 (e.g. |
| enum | Yes |
|
| boolean | No | Save as draft (default: false) |
| string | No | Publish time: |
| string | No | Timezone offset in minutes for scheduling |
| string | No | Source URL for attribution |
| enum | No |
|
| string | No | Short tagline (Launches only) |
| string | No | Repository URL (Launches only) |
| string | No | Website/demo URL (Launches only) |
| enum | No |
|
| enum | No |
|
| enum | No |
|
| string | No | Video type e.g. |
| string | No | Video URL e.g. YouTube link (Videos only) |
edit_post
Edit an existing post's title, content, tags, or category. Only the fields you provide are changed; everything else remains as-is.
Parameter | Type | Required | Description |
| string | Yes | Post ID (numeric) |
| string | Yes | Post URL slug |
| string | No | New title |
| string | No | New Markdown content |
| string | No | New comma-separated tags |
| enum | No | New category ID |
delete_post
Hide (soft-delete) a post. The post becomes invisible to other users but is not permanently removed.
Parameter | Type | Required | Description |
| string | Yes | Post ID (numeric) |
| string | Yes | Post URL slug |
get_post
Retrieve a post's title, content snippet, tags, and author information.
Parameter | Type | Required | Description |
| string | Yes | Post ID (numeric) |
| string | Yes | Post URL slug |
list_posts
Retrieve all posts by a specific CoderLegion user.
Parameter | Type | Required | Description |
| string | Yes | CoderLegion username |
add_comment
Add a Markdown comment to a post thread.
Parameter | Type | Required | Description |
| string | Yes | Post ID (numeric) |
| string | Yes | Post URL slug |
| string | Yes | Comment text in Markdown |
| string | Yes | Comment thread ID (from the post page) |
Profile
get_profile
Get the authenticated user's CoderLegion profile information — name, tagline, location, website, about, skills, interests, achievements, fun fact, and quote. No parameters required.
edit_profile
Edit the authenticated user's profile. Only the fields you provide are updated; others remain unchanged.
Parameter | Type | Required | Description |
| string | No | Full display name |
| string | No | Short tagline/headline shown under the name |
| string | No | About/bio section |
| string | No | Location (e.g. |
| string | No | Personal website URL |
| string | No | Skills description |
| string | No | Interests description |
| string | No | Achievements description |
| string | No | Fun fact about you |
| string | No | Favorite quote |
Search
search_posts
Full-text search across all CoderLegion posts.
Parameter | Type | Required | Description |
| string | Yes | Search query |
browse_tag
Browse posts filtered by a specific tag.
Parameter | Type | Required | Description |
| string | Yes | Tag name (e.g. |
get_categories
Retrieve all post categories with their IDs and descriptions. No parameters required.
Social
react_to_post
React to a post with a like or love. Calling again on the same post toggles the reaction off.
Parameter | Type | Required | Description |
| string | Yes | Post ID to react to |
| enum | Yes |
|
get_notifications
Retrieve your notification feed (comments, reactions, follows). No parameters required.
get_activity_feed
Retrieve the social activity feed from followed users. No parameters required.
Development
# Clone and install
git clone https://github.com/furkankoykiran/coderlegion-mcp.git
cd coderlegion-mcp
npm install
# Run in development mode (auto-reloads on change)
npm run dev
# Type-check
npm run typecheck
# Build for production
npm run buildTesting with MCP Inspector
npx @modelcontextprotocol/inspector node build/index.jsSet the environment variables in the Inspector UI and verify all 13 tools are listed.
Contributing
Contributions are welcome. Please read the contributing guidelines and open an issue before submitting a pull request for significant changes.
License
MIT — see LICENSE.
Available Tools
14 toolsadd_commentC
Add a comment to a CoderLegion post
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post ID (numeric) | |
| slug | Yes | Post URL slug | |
| content | Yes | Comment text in Markdown | |
| comment_id | Yes | Comment thread ID (numeric, from the post page) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden for a mutation operation. It does not disclose authentication requirements, whether the comment is immediately visible, rate limits, or any side effects; the single sentence adds nothing beyond the implied write action.
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, front-loaded sentence with no wasted words. It is appropriately terse for a simple action, though it could benefit from a clarifying clause without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation tool with no annotations and no output schema, the description is critically thin. It omits usage context, behavioral expectations, and return information, leaving the agent under-informed about when and how to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters with clear descriptions. The tool description adds no additional parameter meaning, making the baseline of 3 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?
States a specific verb ('Add') and resource ('comment') with the target platform ('CoderLegion post'), making the action unambiguous. It does not explicitly differentiate from siblings (e.g., create_post, react_to_post), but no sibling is similarly named or scoped, so the lack of differentiation is minor.
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 when-to-use guidance, no prerequisites, and no mention of alternatives such as create_post or edit_post. An agent must infer that this is the correct tool solely from the name and resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_tagB
Browse posts by tag on CoderLegion
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | Tag name (e.g. "python", "javascript") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing: no pagination, ordering, result count, or auth requirements are mentioned. It implies a read-only browse but never confirms it.
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 short sentence that front-loads the action and resource with zero filler. It is efficient, though perhaps terse enough to leave gaps the agent must fill.
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 one-parameter read tool with no output schema, the definition is minimally adequate. It omits result behavior (pagination, sorting, counts), which an agent needs to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single tag parameter is documented with examples in the schema itself. The description adds no meaning beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource: browsing posts filtered by tag on CoderLegion. It does not, however, distinguish itself from siblings like search_posts or list_posts, leaving the agent to guess which filtering tool fits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by "by tag" — there is no explicit statement of when to prefer this over search_posts or list_posts, nor any exclusion. The agent can infer the intent but must decide routing on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_postC
Create a new post on CoderLegion. Supports Articles, Tutorials, Launches, and Videos.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | Yes | Comma-separated tags, max 4 (e.g. "python,automation,mcp") | |
| draft | No | Save as draft instead of publishing (default: false) | |
| title | Yes | Post title | |
| content | Yes | Post content in Markdown | |
| os_type | No | Launch type (Launches only) | |
| vdo_url | No | Video URL, e.g. YouTube link (Videos only) | |
| web_url | No | Website/demo URL (Launches only) | |
| category | Yes | Category ID: 2=Articles, 5=Tutorials, 1971=Launches, 2005=Videos | |
| repo_url | No | Repository URL (Launches only) | |
| vdo_type | No | Video type: Tutorials, Product Demos, Feature Launches, etc. (Videos only) | |
| os_status | No | Project status (Launches only) | |
| os_license | No | License: 1=MIT, 2=Apache 2.0, 3=GPL v3, 4=BSD, 5=Other (Launches only) | |
| os_tagline | No | Short tagline (Launches only) | |
| source_url | No | Source URL for attribution | |
| schedule_utc | No | Timezone offset in minutes for scheduling | |
| schedule_time | No | Schedule publish time: YYYY-MM-DDThh:mm | |
| os_availability | No | Availability (Launches only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description carries the full behavioral burden, yet it only says what post types exist. It does not disclose whether the post publishes immediately (draft vs scheduled), what permissions are required, or what happens to category-specific fields for unrelated categories – critical for a 17-parameter mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, with no filler. The second sentence earns a bit of place by enumerating supported content types, though it partly restates the category enum.
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 17-parameter tool with no annotations and no output schema, the description is too thin. It omits how the many category-specific fields interact (Launches vs Videos vs Articles), draft/scheduling semantics, and any return or confirmation 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%, so the schema already documents all 17 parameters including the category enum and per-category fields. The description's mention of Articles/Tutorials/Launches/Videos loosely maps to the category enum but adds no syntax or constraint detail beyond it. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new post on CoderLegion'), clearly distinct from siblings like edit_post and get_post. The second sentence names the supported post categories, which helps scope the tool, but there is no explicit contrast with any sibling 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 vs edit_post or list_posts, nor any mention of prerequisites (auth, category selection). Usage is only inferable from the bare verb 'create'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_postB
Hide (soft-delete) a post on CoderLegion. The post becomes invisible to other users.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post ID (numeric) | |
| slug | Yes | Post URL slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the soft-delete semantics and the visibility effect ('invisible to other users'), but says nothing about reversibility, whether the author still sees the post, or required permissions/ownership.
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 short sentences, zero filler, with the soft-delete semantics front-loaded right after the verb so the most surprising fact reads first.
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 tool with no output schema this is nearly adequate, but a mutation with no annotations should at least hint at permissions/reversibility. The core effect is covered; the operational prerequisites are not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (id, slug) are documented in the schema, so the description adds no parameter-level meaning beyond what is already structured. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (hide/soft-delete) and resource (a post) and clarifies an important nuance that the tool name delete_post would otherwise obscure: it is a soft delete, not a permanent one. It does not explicitly contrast with edit_post, but the scope is 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?
The description states what happens but gives no when-to-use guidance, no mention of when a permanent delete would be preferable, and no reference to any sibling tool. The agent must infer usage entirely from the name and the word 'Hide'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_postC
Edit an existing post on CoderLegion
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post ID (numeric) | |
| slug | Yes | Post URL slug | |
| tags | No | New comma-separated tags | |
| title | No | New title | |
| content | No | New content in Markdown | |
| category | No | New category ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Edit' implies mutation, but the description does not state whether this requires specific permissions, whether edits are immediately visible, what happens to omitted fields (partial vs. full update), or any side effects. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero waste. It efficiently states the tool's purpose without 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 complexity of a mutation tool with six parameters (two required) and no annotations or output schema, the description is incomplete. It fails to address permissions, partial update behavior, or return values. The schema covers parameters, but behavioral context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters in detail (e.g., types, enum for category). The description adds no additional meaning beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource: 'Edit an existing post on CoderLegion.' This distinguishes it from sibling tools like create_post, delete_post, and get_post. However, it does not differentiate from edit_profile explicitly beyond the resource name, and provides no detail on what aspects of the post can be edited.
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. It doesn't mention prerequisites (e.g., authentication, ownership), nor does it indicate when editing is appropriate or when other tools like delete_post or create_post might be better. There is no 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.
edit_profileB
Edit the authenticated user's CoderLegion profile. Only specified fields are updated; others remain unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Full display name | |
| about | No | About/bio section | |
| quote | No | Favorite quote | |
| skills | No | Skills description | |
| tagline | No | Short tagline/headline shown under the name | |
| website | No | Personal website URL | |
| fun_fact | No | Fun fact about you | |
| location | No | Location (e.g. "Istanbul, Türkiye") | |
| interests | No | Interests description | |
| achievements | No | Achievements description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses PATCH-like partial-update semantics ('others remain unchanged'), which prevents an agent from fearing it will blank unspecified fields. It does not cover auth/permission needs beyond the phrase 'authenticated user's', reversibility, or error behavior.
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 tight sentences with the mutation's scope front-loaded and the partial-update guarantee immediately after. No filler, no redundancy.
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 10-parameter mutation tool with no annotations and no output schema, the description covers what the tool does and the partial-update contract but omits what the response returns, validation/failure behavior, and any auth caveats. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 10 parameters are documented at 100% schema coverage, so the schema already carries full semantics. The description adds no field-level meaning, syntax, or format constraints beyond what the schema provides, making the baseline 3 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?
States a specific verb (Edit) and resource (authenticated user's CoderLegion profile), clearly distinguishable from get_profile in the sibling list. It stops short of naming the read counterpart explicitly, so sibling differentiation is implied rather than stated.
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 when-to-use guidance, prerequisites, or alternatives are given. The partial-update note ('Only specified fields are updated') describes mechanics rather than the conditions under which an agent should choose this tool over get_profile or others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_activity_feedA
Get the CoderLegion social activity feed from followed users
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the data source scope (followed users only), which is useful, but says nothing about pagination, ordering, result limits, or authentication requirements for a feed endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every word contributes to identifying the resource and its scope.
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 should say more about what comes back (activity items, ordering, whether results are paginated or bounded). For a simple zero-param read the gap is modest but real.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing parameter-related for the description to explain or compensate for.
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?
States a specific verb (Get) and resource (social activity feed) plus a scope qualifier ('from followed users') that separates it from siblings like get_notifications and list_posts. It does not explicitly name or contrast with any sibling, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'from followed users' implies when this tool is appropriate (viewing posts/activity of accounts you follow), but there is no explicit when-to-use guidance and no alternative tool is named, even though get_notifications and list_posts overlap in intent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_categoriesA
List all CoderLegion post categories with their IDs
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It conveys useful scope information ("all" categories with IDs, implying a complete unfiltered listing), but says nothing about authentication/permissions needed or whether results are cached or paginated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. Every word earns its place, and no additional text would be needed for a tool this simple.
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 trivial, 0-param, read-only listing tool with no output schema and no annotations, the description is nearly sufficient, telling the agent what is returned. It could go slightly further by describing the shape of a category record beyond the ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify; the baseline for a 0-param tool applies. The description correctly implies no inputs are required.
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?
States a specific verb ("List") and resource ("CoderLegion post categories"), and even names the returned payload (categories with IDs). No sibling tool covers categories, so there is no real ambiguity, though the description does not explicitly set itself apart from any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: nothing tells the agent this is the prerequisite step for create_post/edit_post category assignment, and no alternatives or exclusions are mentioned. Usage is only inferable from the tool name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notificationsB
Get your CoderLegion notifications
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and delivers almost nothing. It doesn't state read-only nature, whether it requires auth, whether results are paginated, or how read state is handled.
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 short sentence, front-loaded and waste-free. Nothing redundant or padded.
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 no-param tool, the description is functionally callable but omits nearly all useful context — no mention of auth requirement, pagination, sort order, or overlap with get_activity_feed. With no annotations and no output schema, the description is too thin.
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?
Zero parameters, so the baseline of 4 applies. There is nothing for the description to clarify beyond the schema's empty object.
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?
States a specific verb (get) and resource (notifications) scoped to the caller. Siblings are all posts/comments/profile/feed tools, so notifications is clearly distinguished, though the description doesn't elaborate on what notifications contain or how they're ordered.
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 versus get_activity_feed, which is a plausibly overlapping sibling. No exclusions, prerequisites, or context for when notifications should be fetched.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_postA
Read a post from CoderLegion and return its title, content snippet, tags, and author
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post ID (numeric) | |
| slug | Yes | Post URL slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the return shape (title, content snippet, tags, author) and implies a non-destructive read, but says nothing about behavior when the id/slug is invalid or mismatched, or whether content is truncated.
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 tight sentence with zero filler, front-loading the action and following immediately with the concrete return fields.
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, the description usefully enumerates the returned fields, which is the key missing structured information for a read tool. It stops short of covering error behavior or the id/slug relationship, but is otherwise sufficient for a simple two-param fetch.
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 both parameters are already documented as 'Post ID (numeric)' and 'Post URL slug', establishing the baseline of 3. The description adds no extra meaning, such as whether id and slug must refer to the same post or how slug is derived.
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?
States a specific verb (Read) and resource (a post from CoderLegion) and enumerates the returned fields, which clearly distinguishes it from list_posts, search_posts, and browse_tag. It does not name those siblings explicitly, but the single-post read intent is 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?
Usage is only implied: the agent can infer this fetches one post by id/slug, but there is no statement of when to prefer it over search_posts or list_posts, and no mention of prerequisites or failure conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profileA
Get the authenticated user's CoderLegion profile information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a meaningful behavioral constraint — the result is scoped to the authenticated user, not an arbitrary user — which tells the agent the operation needs an authenticated session. It says nothing about the returned payload's shape or error behavior when unauthenticated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every word is load-bearing and the resource is named immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read of the caller's own profile, the description covers what the tool does and who it acts on. The only minor gap is that, since no output schema exists, it doesn't hint at what profile fields come back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The description correctly implies no inputs are needed by referring only to the authenticated context.
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 gives a specific verb ("Get") and resource ("authenticated user's CoderLegion profile information"), which is clearly distinguishable from the sibling edit_profile. It stops short of explicitly contrasting itself with edit_profile, but the read vs. write framing makes the distinction evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope phrase "authenticated user's" — an agent can infer this is the correct call when it needs the current user's own profile, with no parameters required. However, it never states when to prefer this over edit_profile or what preconditions (auth) apply, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_postsC
List posts by a CoderLegion user
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | CoderLegion username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' implies a safe read, but the description says nothing about pagination, ordering, result limits, whether drafts/private posts are included, or what the response contains.
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 short, front-loaded sentence with no filler or repetition. It is efficient, though it is efficient partly by omitting information an agent would want.
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 one-parameter list tool this is minimally adequate, and the parameter is fully covered by the schema. With no output schema and no annotations, though, the description should at least indicate result shape or pagination behavior for the calling 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 description coverage is 100% — the single 'username' parameter is already documented in the schema as 'CoderLegion username'. The phrase 'by a CoderLegion user' restates that mapping without adding format or validation detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('posts') scoped to a CoderLegion user, which is clearer than a bare tautology. However it does nothing to differentiate itself from siblings like search_posts, get_post, or get_activity_feed, which also surface 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?
There is no guidance on when to use this versus search_posts (filtered search) or get_post (single post), nor any mention of prerequisites or result scope. The agent must infer the distinction from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
react_to_postC
React to a CoderLegion post with a like or love
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Reaction type | |
| post_id | Yes | Post ID to react to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not indicate whether reactions can be changed or removed, whether there are rate limits, whether authentication is required beyond the implied post_id, or what the response contains. Only the core action is described.
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 that is front-loaded and wastes no words. It efficiently conveys the essential action and the available reaction types.
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 mutation tool with no annotations and no output schema, the description is incomplete. It omits when to use it, behavioral traits (like idempotency or changeability), and expected outcomes, leaving significant gaps for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (post_id and type with enum). The description adds no additional meaning beyond what the schema provides, such as format examples or validation rules. 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 a specific verb (react) and resource (CoderLegion post) with the allowed reaction types (like/love), so the agent knows exactly what the tool does. It doesn't explicitly differentiate from siblings like add_comment, but the verb 'react' is distinct enough to not be confused.
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 such as add_comment or edit_post. It doesn't state prerequisites (e.g., whether the post must exist, whether the user can react to their own post) or any constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_postsC
Search for posts on CoderLegion
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it says nothing about result ranking, pagination, limits, or that this is a read-only operation. For a search tool with zero annotation coverage, this is a notable gap.
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 short, front-loaded sentence with no filler. It is efficient, though its brevity borders on under-specification rather than tight phrasing.
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 one-parameter search tool this is minimally viable, but with no output schema the description could reasonably indicate what results look like or how matching works. Nothing beyond the bare purpose is conveyed.
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?
There is only one parameter and the schema documents it at 100% coverage, so the baseline is 3. The description adds no syntax, matching behavior, or format hints beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (posts), so an agent immediately understands it queries posts. However, it does nothing to distinguish itself from siblings like list_posts, get_post, or browse_tag, which also surface posts by different means.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use search_posts versus list_posts or browse_tag. The agent must infer that a keyword query is the differentiator, which is plausible but never stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
v1.1.1- First observed
add_comment - First observed
browse_tag - First observed
create_post - First observed
delete_post - First observed
edit_post - First observed
edit_profile - First observed
get_activity_feed - First observed
get_categories - First observed
get_notifications - First observed
get_post - First observed
get_profile - First observed
list_posts - First observed
react_to_post - First observed
search_posts
TDQS
Scored across 14 tools
Most tools target a distinct action+resource, but the read-side of posts has four overlapping entry points (list_posts, search_posts, browse_tag, get_activity_feed) that an agent could easily confuse when just wanting to find posts. The descriptions do differentiate them (by user, query, tag, followed users), so ambiguity is manageable rather than severe.
Every tool follows a clean verb_noun snake_case pattern (get_post, create_post, edit_post, delete_post, add_comment, react_to_post, get_profile, edit_profile). No mixed conventions or vague verbs appear anywhere in the set.
14 tools is well within the sweet spot for a social/blogging platform and each one maps to a real user-facing operation. Nothing feels padded or redundant at the count level.
Posts have full lifecycle coverage (create, get, list, search, browse, edit, soft-delete) plus comments, reactions, categories, profile, notifications, and a feed. Minor gaps exist on the secondary resources — no delete/unreact for reactions, no comment listing or deletion — but these are workable omissions.
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
A simple Typescript MCP server built using the official MCP Typescript SDK and smithery/cli. This…
A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automati…
MCP server for Pinchwork - an agent-to-agent task marketplace with credits-based economy
Related MCP Servers
- AlicenseCqualityFmaintenanceA TypeScript-based MCP server designed for experimentation and integration with Calude Desktop and Cursor IDE, offering a modular playground for extending server capabilities.2339 npm7MIT
- AlicenseNot gradedqualityCmaintenanceProxy MCP server that translates tool calls into TypeScript code generation, enabling LLMs to orchestrate multi-tool workflows efficiently via code.1 npm14MIT
- AlicenseAqualityAmaintenanceProduction-ready template for building MCP servers with TypeScript, featuring example tools and resources, and Claude Desktop integration.14 npmMIT
- AlicenseNot gradedqualityDmaintenanceA TypeScript template for building MCP servers, enabling developers to create custom tools for AI assistants like Claude.11 npmMIT