@dayby/mcp-server
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., "@@dayby/mcp-serverDraft a post about using partial indexes for multi-tenant queries."
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.
@dayby/mcp-server
Post your dev progress to DayBy.dev from Claude, Cursor, or any MCP client — with local sanitization so your company secrets never leave your machine.
How It Works
draft_post → sanitized locally, never touches network
→ Claude shows you a clean preview
→ you approve
→ publish_post → DayBy API (sanitized content only)The raw context from your codebase never touches the network. Only the sanitized, approved version gets published.
Related MCP server: Ghost Writer MCP
Tools
Tool | What it does | Touches network? |
| Creates a sanitized draft from your description | No |
| Modify a draft before publishing | No |
| Dry-run: see what would get stripped | No |
| Publish an approved draft to DayBy | Yes (sanitized only) |
| List your recent DayBy posts | Yes |
| Fetch a single post by slug | Yes |
| Update title, content, or visibility | Yes |
| Permanently delete a post | Yes |
What Gets Stripped (Automatically)
API keys, tokens, secrets
AWS ARNs and access keys
Private IP addresses
Email addresses
SSH keys, JWTs, GitHub tokens
Database connection URLs
File paths with usernames
Plus anything you configure in blocklist
Setup
1. Install
Option A — npx (no install needed):
npx @dayby/mcp-serverOption B — global install:
npm install -g @dayby/mcp-serverOption C — from source:
git clone https://github.com/ja-roque/dayby-mcp-server.git
cd dayby-mcp-server
npm install && npm run build2. Authenticate
Run the auth command to connect your DayBy account:
dayby-mcp authThis opens your browser for a one-click authorization. Your token is saved locally at ~/.dayby/credentials.json.
To log out:
dayby-mcp auth --logoutAlternatively, you can set the DAYBY_API_KEY environment variable (from Settings > API on dayby.dev).
3. Add to your MCP client
Claude Code (simplest):
claude mcp add dayby -- dayby-mcpOr with npx:
claude mcp add dayby -- npx @dayby/mcp-serverClaude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"dayby": {
"command": "npx",
"args": ["@dayby/mcp-server"]
}
}
}Cursor (.cursor/mcp.json):
{
"mcpServers": {
"dayby": {
"command": "npx",
"args": ["@dayby/mcp-server"]
}
}
}4. Configure Sanitizer (Optional but Recommended)
Create ~/.dayby/sanitizer.json:
{
"blockedTerms": ["YourCompany", "ProjectCodename"],
"blockedDomains": ["internal.yourcompany.com"],
"blockedNames": ["Your Boss Name"],
"customPatterns": ["JIRA-\\d+", "INTERNAL-\\d+"]
}Usage Examples
While coding:
"I just figured out how to use PostgreSQL partial indexes to optimize a multi-tenant query. Draft a DayBy post about it."
After a PR:
"I built a rate limiter using Redis sorted sets today. Post it to DayBy."
Quick check:
"Check if this text has any sensitive data before I post it."
Claude will use draft_post to sanitize locally, show you a preview, and only publish when you approve.
Environment Variables
Variable | Description | Default |
| Your DayBy API key (alternative to | (none) |
| DayBy API URL |
|
| Comma-separated blocked terms | (none) |
| Comma-separated blocked domains | (none) |
Troubleshooting
dayby-mcp: command not found after global install
Your npm global bin isn't in your PATH. Run:
source ~/.bashrcOr add this to your ~/.bashrc / ~/.zshrc:
export PATH="$(npm bin -g):$PATH"Then restart your terminal or run source ~/.bashrc again.
MCP server not showing up in Claude
Restart Claude Code / Claude Desktop after adding the MCP config.
Not authenticated errors
Run dayby-mcp auth to connect your account, or set DAYBY_API_KEY in your environment.
License
MIT
Available Tools
9 toolscheck_contentA
Check if content contains sensitive data without creating a draft. Useful for quick checks before writing a post.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to check for sensitive content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It usefully states that the tool does not create a draft, implying a non-mutating check, but it does not describe the output format, potential errors, or what 'sensitive data' detection entails.
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 with no filler. The core behavior and usage context are front-loaded, and every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter check tool with no output schema, the description is mostly complete: it states what is checked, that no draft is created, and when it is useful. It could be more explicit about the return value or side effects, but the simplicity of the tool limits the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's 'content' aligns with the 'text' parameter, and the schema already describes it as 'Text to check for sensitive content', so the description adds no additional parameter semantics beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and resource ('content') with a clear goal ('contains sensitive data'), and explicitly states 'without creating a draft', which differentiates it from sibling write tools like draft_post and publish_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Useful for quick checks before writing a post' provides clear contextual guidance on when to use the tool. It implies a pre-write validation step and the 'without creating a draft' language distinguishes it from draft creation tools, though it does not name alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_postA
Permanently delete a DayBy post by its slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The post slug to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does disclose irreversibility through 'Permanently delete,' which is important for a destructive operation. However, it does not mention whether related resources are affected, whether authorization is required, or what happens after deletion.
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 redundant wording or filler. Every word contributes meaning.
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 delete operation, the description plus schema provides enough information for an agent to invoke the tool correctly. The main missing context is side effects beyond the deletion itself, but the tool's simplicity keeps this from being a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single parameter and its description, so the description adds little beyond restating 'by its slug.' Baseline 3 is appropriate since schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('delete'), a concrete resource ('DayBy post'), and the identifying key ('slug'). It clearly distinguishes this tool from siblings like update_post, publish_post, and list_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?
The word 'permanently delete' implies the tool is for removing a post when it is no longer needed, but there is no explicit guidance about when not to use it or which sibling to choose instead. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_postA
Create a sanitized draft of a dev progress post. Content is cleaned locally — nothing is sent to the network. Returns a preview for the user to review before publishing.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags/project names for this post (e.g., ["playflow", "rust"]). Used to filter posts by project in the public API. | |
| title | Yes | Post title — focus on the technology/skill learned | |
| content | Yes | Post content — describe what you learned, built, or solved. The sanitizer will strip any sensitive data automatically. | |
| visibility | No | Post visibility on DayBy | published |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does disclose two important behaviors: content is sanitized locally and nothing is sent to the network. It also says the return is a preview. It doesn't specify what sanitization strips or whether the draft is persisted, but for a local preview helper this is above-average disclosure.
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 sentences with no filler; the verb and resource appear first, followed by the two most decision-relevant behaviors (local cleaning and preview). Appropriate size for this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers overall purpose, local behavior, and a return preview, which is serviceable. However, with no output schema or annotations, it leaves open how the preview is represented, whether the draft is saved, and how visibility/publishing flow relates to publish_post. That is a meaningful gap for a 4-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already explains title, content, tags, and visibility, giving the baseline. The description's 'cleaned locally' aligns with the content parameter but adds no syntax or value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb-object pair ('Create ... draft of a dev progress post') and adds the distinctive 'sanitized' qualifier. It clearly positions itself as the pre-publication preview step, not publish or edit, and separates it from siblings such as edit_draft and publish_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'before publishing' phrase and 'Returns a preview' give clear context: use this tool when you need a reviewed, sanitized draft before publishing. It doesn't explicitly name alternatives or state when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_draftA
Edit a draft post before publishing. Provide updated title and/or content — they will be re-sanitized locally.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Updated tags/project names | |
| title | No | Updated title (will be re-sanitized) | |
| content | No | Updated content (will be re-sanitized) | |
| draft_id | Yes | The draft ID from draft_post | |
| visibility | No | Updated visibility |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses a useful behavioral trait: title and content 'will be re-sanitized locally.' However, with no annotations, it omits potential side effects such as setting visibility to 'published,' which the schema allows and which slightly conflicts with the 'before publishing' framing.
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, with the main action front-loaded and no filler. The key behavioral note about re-sanitization is concisely included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a basic draft edit, but it doesn't mention the visibility parameter's ability to publish or any output/return behavior. Given no output schema and no annotations, an agent would only have partial context for less-common use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented in the schema. The description adds minimal extra meaning beyond mentioning title and content, and doesn't discuss tags or visibility, but the schema already covers those.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Edit a draft post') and adds the timing constraint 'before publishing,' which helps distinguish it from update_post and publish_post. It doesn't explicitly name alternatives, but the draft focus is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context ('before publishing') but no explicit guidance on when to use this tool versus siblings like update_post or update_article. There are no exclusions or alternative routing hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_postA
Get a single DayBy post by its slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The post slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only says 'Get', implying a read operation, but it doesn't mention whether the returned post is a draft or published, what fields are included, whether authentication is required, or how errors (e.g., missing slug) are handled. These are meaningful gaps for a tool that interacts with posts that may have draft/published states as suggested by sibling tools.
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 filler words. Every word adds value: 'Get' (action), 'single' (cardinality), 'DayBy post' (resource), 'by its slug' (access path). It is excellently concise.
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 getter, this description is minimally adequate: it states the operation and the lookup key. However, without an output schema, it does not describe what the tool returns (full post body, metadata only, etc.) or any filtering behavior (e.g., drafts vs. published). Given the tool's simplicity, the description is close to sufficient but still leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the only parameter, 'slug', with a description 'The post slug'. The tool description adds 'by its slug', which confirms that slug is the identifier, but it doesn't provide additional semantic details such as slug format or case sensitivity. With 100% schema coverage, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Get'), a specific resource ('a single DayBy post'), and the lookup key ('by its slug'). It clearly distinguishes itself from sibling tools like list_posts (plural) and update_post by emphasizing 'single'. This is a precise and unambiguous statement of purpose.
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 'a single... by its slug' implies this tool is for fetching one specific post rather than listing all posts, but it does not explicitly mention alternatives like list_posts or when to prefer one over the other. The usage context is implied but not stated as a guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_postsC
List your recent DayBy posts.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| per_page | No | Posts per page |
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 disclosing behavior. It adds only 'your' (ownership scope) and 'recent' (recency), but does not explain whether drafts and published posts are both included, how results are ordered, whether this is strictly read-only, or what authentication expectations exist.
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 with no filler or redundant wording. It front-loads the action and resource, which is ideal for a simple list endpoint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should explain what the response contains, but it does not mention return shape, included post fields, status filtering, or ordering. Given the sibling tools include update_post and delete_post, an agent would benefit from knowing whether list_posts returns drafts, published posts, or both.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both page and per_page with clear descriptions, giving 100% schema description coverage. The description does not add further parameter-level meaning beyond implying a paginated list, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List') and resource ('your recent DayBy posts'), indicating a collection-level operation that is distinguishable from get_post's single-post retrieval. It does not explicitly contrast with siblings, but the plural 'posts' and 'recent' make the core purpose 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?
There is no guidance on when to use this tool instead of alternatives such as get_post, update_post, or draft_post. The phrase 'recent posts' weakly implies a browsing use case, but the description does not state when-not-to-use or mention any sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_postA
Publish a previously drafted post to DayBy. Only the sanitized version is sent — the original content never leaves your machine.
| Name | Required | Description | Default |
|---|---|---|---|
| draft_id | Yes | The draft ID from draft_post | |
| generate_article | No | Also generate an AI-formatted article on DayBy after publishing |
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 a meaningful privacy behavior: 'Only the sanitized version is sent — the original content never leaves your machine.' However, it does not mention side effects on the draft, permissions, 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?
The description is two sentences with a clear front-loaded purpose statement and a valuable privacy guarantee in the second. There is no filler; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two simple parameters and no output schema, the description covers purpose and a key behavioral constraint. It lacks return-value or post-publish state information, but that is a minor gap given the schema handles parameter documentation and the overall complexity is low.
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% — both draft_id and generate_article are documented in the schema. The description adds no additional parameter-level meaning beyond linking the draft to a prior draft_post action, so the baseline score of 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 uses the specific verb 'publish' and identifies the resource as 'a previously drafted post to DayBy', clearly distinguishing it from siblings like draft_post, edit_draft, update_post, and delete_post. The phrase 'previously drafted' reinforces that this action applies only to existing drafts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool is for drafts ('previously drafted post'), implying it should be used after draft_post and before or after edit_draft. It does not explicitly name alternative tools or state when not to use it, but the draft qualifier gives a strong selection signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_articleA
Set or replace the HTML article for a DayBy post. Use this to write custom articles with CTAs, rich formatting, or any content the user wants.
DayBy article HTML rules:
Return clean HTML fragments only (no wrapper divs, article tags, doctype, html, head, body)
Use tags for paragraphs (no classes needed)
Use for section headings, for sub-sections
Use for key terms, for emphasis
Use for pull quotes
Use for code blocks, inline for references
Use / for lists (prefer prose over lists)
Use for links and CTAs
No CSS classes on elements (the page stylesheet handles typography)
Target length: 600-1000 words
Keep the author's voice and perspective from the original post
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The post slug to update | |
| html_article | Yes | The HTML article content. Follow DayBy article HTML rules in the tool description. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of behavioral disclosure, and it delivers substantial value: 'Set or replace' reveals overwrite semantics, and the extensive DayBy HTML rules (clean fragments, no wrapper divs, no CSS classes, target length 600-1000 words, preserve author voice) define exactly what the tool expects and enforces. It does not disclose what happens to the post's publication state, whether the operation is reversible, or what the response contains, but the input-format contract is unusually specific.
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 purpose sentence is front-loaded, followed by a dense, scannable rule list where every line earns its place as an operational constraint (allowed tags, forbidden classes, length target, voice guidance). Nothing is redundant or filler, and the formatting rules are structured as a clear checklist rather than prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for input formatting but silent on the post lifecycle: it never says whether the slug must reference an existing post, whether the tool works on drafts or published posts, how it interacts with the draft→publish flow represented by siblings like draft_post, edit_draft, and publish_post, or what the tool returns (no output schema exists to compensate). An agent could invoke it correctly but wouldn't know the downstream effect or validation outcomes.
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%: slug is described as 'The post slug to update' and html_article as 'The HTML article content.' At the baseline of 3 for high coverage, the description still adds meaningful depth by fully specifying the HTML contract for the html_article parameter, which the schema only references indirectly. The slug parameter gains nothing beyond the schema, keeping this at baseline rather than above.
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 first sentence states a specific action and resource: 'Set or replace the HTML article for a DayBy post.' This clearly identifies the tool's job and distinguishes it from lifecycle siblings like list_posts, get_post, and delete_post. However, it doesn't explicitly differentiate from the closely related update_post or edit_draft siblings, leaving some ambiguity about when the article-specific tool wins over the generic update tool.
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?
'Use this to write custom articles with CTAs, rich formatting, or any content the user wants' is an explicit when-to-use directive that gives the agent a concrete trigger condition. It provides clear context but stops short of stating exclusions or naming alternatives (e.g., 'use update_post for metadata changes' or 'use draft_post if no post exists yet').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_postC
Update an existing DayBy post by slug. Content is sanitized locally before sending.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The post slug to update | |
| tags | No | Updated tags/project names | |
| title | No | New title (will be sanitized) | |
| content | No | New content (will be sanitized) | |
| visibility | No | New visibility |
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. It adds one meaningful detail—local sanitization before sending—but largely repeats the schema's sanitization notes and does not explain important behaviors such as partial updates, permission requirements, effects on published vs. draft posts, or result/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?
The description is a single tight sentence that front-loads the primary action and resource before adding the sanitization note. There is no wasted wording or irrelevant detail.
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 mutating tool with no output schema and no annotations, the description is under-specified. It does not explain whether the update is partial or full, what happens when only some fields are provided, how visibility interacts with publish/draft status, or what the tool returns—and it gives no guidance to distinguish it from closely related sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well-documented. The description adds minimal extra semantic value beyond repeating 'by slug' and 'sanitized', which is also present in the schema; the schema-description baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and the resource ('an existing DayBy post by slug'), so an agent can identify the core operation. However, it does not differentiate this tool from siblings like edit_draft or update_article, leaving some ambiguity about which updating tool to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use update_post versus the sibling tools (e.g., edit_draft, publish_post, update_article). The description only says what the tool does, not when it should be selected over alternatives or what conditions apply.
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.
9 tool updates
v0.3.2- First observed
check_content - First observed
delete_post - First observed
draft_post - First observed
edit_draft - First observed
get_post - First observed
list_posts - First observed
publish_post - First observed
update_article - First observed
update_post
TDQS
Scored across 9 tools
Most tools map cleanly to distinct lifecycle stages: draft, edit, publish, update, delete. The main potential confusion is between update_post and update_article, since both modify an existing post, though their descriptions differentiate general content updates from HTML article replacement.
Tool names mostly follow a clear verb_noun snake_case pattern: list_posts, get_post, publish_post, update_post, delete_post, check_content. Minor deviations exist with edit_draft and update_article, which use different object nouns, and draft_post could be read as a noun phrase, but the overall convention is still predictable.
Nine tools is a well-scoped size for a focused post-management server. Each tool covers a meaningful part of the drafting, publishing, updating, and deletion workflow without redundancy or excessive surface area.
The core lifecycle is covered well: draft, edit draft, publish, list, get, update, delete, and content checking. The main gap is that once a draft is created, there is no explicit way to list or retrieve saved drafts, which could make the edit_draft workflow harder to use.
Maintenance
Related MCP Connectors
Publish Markdown or HTML to a shareable link from your AI assistant. OAuth, no API keys.
Publish and manage secure HTML links: PII/secret scanning, batch create, patch edits, analytics.
Marketing autopilot in your IDE. AI turns codebase and context into content for 10+ platforms
Publish artifacts to one stable public temp.md link that updates in place. No account needed.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables publishing blog posts directly to Dev.to through the Model Context Protocol, allowing seamless content creation and publication via natural language interactions.MIT
- AlicenseNot gradedqualityDmaintenanceScans Git repositories, identifies interesting engineering work, and generates LinkedIn post drafts with built-in confidentiality sanitisation.MIT
- AlicenseBqualityDmaintenanceEnables sharing coding progress on Twitter by analyzing sessions and generating tweet suggestions, with tools for posting tweets, threads, and OAuth authentication.85 npm9MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to publish blog posts directly to Dev.to via the Model Context Protocol.11-