Skip to main content
Glama
ja-roque

@dayby/mcp-server

by ja-roque

@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?

draft_post

Creates a sanitized draft from your description

No

edit_draft

Modify a draft before publishing

No

check_content

Dry-run: see what would get stripped

No

publish_post

Publish an approved draft to DayBy

Yes (sanitized only)

list_posts

List your recent DayBy posts

Yes

get_post

Fetch a single post by slug

Yes

update_post

Update title, content, or visibility

Yes

delete_post

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-server

Option B — global install:

npm install -g @dayby/mcp-server

Option C — from source:

git clone https://github.com/ja-roque/dayby-mcp-server.git
cd dayby-mcp-server
npm install && npm run build

2. Authenticate

Run the auth command to connect your DayBy account:

dayby-mcp auth

This opens your browser for a one-click authorization. Your token is saved locally at ~/.dayby/credentials.json.

To log out:

dayby-mcp auth --logout

Alternatively, 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-mcp

Or with npx:

claude mcp add dayby -- npx @dayby/mcp-server

Claude 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"]
    }
  }
}

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

DAYBY_API_KEY

Your DayBy API key (alternative to dayby-mcp auth)

(none)

DAYBY_API_URL

DayBy API URL

https://dayby.dev

DAYBY_BLOCKED_TERMS

Comma-separated blocked terms

(none)

DAYBY_BLOCKED_DOMAINS

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 ~/.bashrc

Or 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 tools
check_contentA

Check if content contains sensitive data without creating a draft. Useful for quick checks before writing a post.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to check for sensitive content

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe post slug to delete

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

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 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags/project names for this post (e.g., ["playflow", "rust"]). Used to filter posts by project in the public API.
titleYesPost title — focus on the technology/skill learned
contentYesPost content — describe what you learned, built, or solved. The sanitizer will strip any sensitive data automatically.
visibilityNoPost visibility on DayBypublished

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoUpdated tags/project names
titleNoUpdated title (will be re-sanitized)
contentNoUpdated content (will be re-sanitized)
draft_idYesThe draft ID from draft_post
visibilityNoUpdated visibility

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/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 ('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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe post slug

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number
per_pageNoPosts per page

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

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 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
draft_idYesThe draft ID from draft_post
generate_articleNoAlso generate an AI-formatted article on DayBy after publishing

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe post slug to update
html_articleYesThe HTML article content. Follow DayBy article HTML rules in the tool description.

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe post slug to update
tagsNoUpdated tags/project names
titleNoNew title (will be sanitized)
contentNoNew content (will be sanitized)
visibilityNoNew visibility

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 9 tool updatesv0.3.2
    • First observedcheck_content
    • First observeddelete_post
    • First observeddraft_post
    • First observededit_draft
    • First observedget_post
    • First observedlist_posts
    • First observedpublish_post
    • First observedupdate_article
    • First observedupdate_post

TDQS

A3.6/5.0

Scored across 9 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers