Skip to main content
Glama
usenotra

notra

Official
by usenotra

Notra MCP Server

An MCP (Model Context Protocol) server for the Notra API. It manages posts, brand identities, integrations, schedules, GEO visibility scans, competitors, content briefs, and AI traffic analytics.

Setup

You can generate an API key from your Notra workspace dashboard under Developer > API Keys.

Node.js 20 or newer is required.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "notra": {
      "command": "npx",
      "args": ["-y", "@usenotra/mcp"],
      "env": {
        "NOTRA_API_KEY": "your-api-key"
      }
    }
  }
}

Claude Code

claude mcp add notra -- npx -y @usenotra/mcp

Then set the NOTRA_API_KEY environment variable in your shell before launching Claude Code.

Codex

export NOTRA_API_KEY=your-api-key
codex mcp add notra --env NOTRA_API_KEY="$NOTRA_API_KEY" -- npx -y @usenotra/mcp

Run codex mcp list to verify the connection. The Codex CLI, desktop app, and IDE extension share this MCP configuration.

OpenCode

Set NOTRA_API_KEY in your shell, then add the server to your project-level opencode.json or the global ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "notra": {
      "type": "local",
      "command": ["npx", "-y", "@usenotra/mcp"],
      "enabled": true,
      "environment": {
        "NOTRA_API_KEY": "{env:NOTRA_API_KEY}"
      }
    }
  }
}

Amp

Run amp config edit and add the following to your settings, or place it in .amp/settings.json for a workspace-specific configuration:

{
  "amp.mcpServers": {
    "notra": {
      "command": "npx",
      "args": ["-y", "@usenotra/mcp"],
      "env": {
        "NOTRA_API_KEY": "${NOTRA_API_KEY}"
      }
    }
  }
}

Set NOTRA_API_KEY in the environment before launching Amp. Workspace MCP servers may require approval with amp mcp approve notra.

Related MCP server: Substack MCP Server

Remote MCP (OAuth)

The hosted streamable HTTP server at https://mcp.usenotra.com/mcp uses OAuth as the primary authentication method. It supports the current 2026-07-28 MCP protocol as well as legacy 2025 clients. MCP clients should discover protected resource metadata at:

https://mcp.usenotra.com/.well-known/oauth-protected-resource

That metadata points to the Notra authorization server (WorkOS AuthKit) at https://auth.usenotra.com, which supports dynamic client registration (RFC 7591). The MCP server also mirrors the authorization server metadata at https://mcp.usenotra.com/.well-known/oauth-authorization-server.

API key alternative

Remote connections also accept a Notra API key as a static Authorization: Bearer … header. Generate one from your Notra workspace dashboard under Developer > API Keys. OAuth-capable clients should prefer the OAuth flow instead of manual key configuration.

For self-hosted HTTP deployments, OAuth validation can be configured with:

WORKOS_AUTHKIT_DOMAIN=auth.usenotra.com
WORKOS_CLIENT_ID=client_xxx
NOTRA_MCP_RESOURCE=https://mcp.usenotra.com

The issuer is https://{WORKOS_AUTHKIT_DOMAIN} and must match the iss claim in tokens minted by AuthKit; a mismatch causes every bearer token to be rejected. Token signatures are verified against https://{WORKOS_AUTHKIT_DOMAIN}/oauth2/jwks.

When NODE_ENV=development, the default AuthKit domain is divine-dress-62-development.authkit.app; production defaults to auth.usenotra.com.

Tools

Posts

Tool

Description

list_posts

List posts with optional filters for sorting, pagination, status, content type, and brand identity

get_post

Get a single post by ID

update_post

Update a post's title, markdown, or status

delete_post

Delete a post

generate_post

Queue async post generation from GitHub activity

get_post_generation_status

Check the status of a post generation job

Brand Identities

Tool

Description

list_brand_identities

List all brand identities

get_brand_identity

Get a single brand identity by ID

update_brand_identity

Update brand identity settings

delete_brand_identity

Delete a brand identity

generate_brand_identity

Queue async brand identity generation from a website URL

get_brand_identity_generation_status

Check the status of a brand identity generation job

Integrations

Tool

Description

list_integrations

List all connected integrations (GitHub, Slack, Linear)

create_github_integration

Connect a GitHub repository

delete_integration

Delete a GitHub or Linear integration

Schedules

Tool

Description

list_schedules

List scheduled content generation jobs

create_schedule

Create a scheduled content generation job

update_schedule

Update a scheduled content generation job

delete_schedule

Delete a scheduled content generation job

Chats

Tool

Description

list_chats

List chat sessions

get_chat

Get a single chat with messages

get_chat_by_external_channel

Get a chat by Discord or Slack channel ID

create_chat

Start a new chat and return the streamed reply

post_chat_message

Post a message to an existing chat and return the streamed reply

Skills

Tool

Description

list_skills

List reusable writing skills

get_skill

Get a single skill by name

create_skill

Create a reusable writing skill

update_skill

Update a reusable writing skill

delete_skill

Delete a reusable writing skill

Projects

GEO features are scoped to a project. Most GEO tools take a projectId; call list_projects first to find it. GEO tools require an organization-scoped API key and the GEO plan.

Tool

Description

list_projects

List the organization's GEO projects

get_project

Get a single project by ID

create_project

Create a project, optionally linked to a brand

update_project

Rename a project or relink its brand identity

delete_project

Delete a project and all of its GEO data (cascading)

GEO settings

Tool

Description

get_geo_settings

Get tracked company, aliases, languages, engines and scan config

update_geo_settings

Replace the settings document and restart the scan cycle

GEO prompts and sequences

Tool

Description

list_geo_prompts

List tracked prompts (custom and auto-derived)

create_geo_prompt

Track a new prompt

update_geo_prompt

Enable or disable a tracked prompt

delete_geo_prompt

Stop tracking a prompt

import_geo_prompts

Bulk import prompts from rows or CSV

list_geo_sequences

List multi-turn prompt sequences

create_geo_sequence

Create a prompt sequence

update_geo_sequence

Update a sequence's name, steps or enabled state

delete_geo_sequence

Delete a sequence

run_geo_sequence

Run a sequence now, synchronously (uses AI credits, can take minutes)

GEO competitors

Tool

Description

list_geo_competitors

List tracked competitors

upsert_geo_competitor

Create, update or rename a competitor

suggest_geo_competitors

AI-discover likely competitors for a domain

delete_geo_competitor

Stop tracking a competitor

import_geo_competitors

Bulk import competitors from rows or CSV

GEO scans and visibility

Tool

Description

create_geo_scan

Trigger an async visibility scan (uses AI credits)

list_geo_scans

List scans with pagination

get_geo_scan

Get a scan and its status

get_geo_visibility_overview

Mention rates per answer engine

get_geo_visibility_timeseries

Daily mention counts per engine

get_geo_prompt_results

Latest stored answer per prompt and engine, with sources

get_geo_competitor_share

Share of voice across tracked brands

get_geo_language_share

Mention rates per tracked language

get_geo_competitor_detail

One competitor's mention history and the prompts driving it

GEO content briefs

Tool

Description

list_geo_content_gaps

Prompts where competitors are mentioned and this brand is not

list_geo_content_briefs

List content briefs and their statuses

plan_geo_content_brief

Research a topic and plan a brief (billed, can take minutes)

get_geo_content_brief

Get a brief with the full document and writer status

approve_geo_content_brief

Approve a brief and start the article writer

Agent readiness

Tool

Description

get_geo_agent_readiness

Latest readiness report, score history and any scan in flight

start_geo_agent_readiness_scan

Queue a readiness scan of the project's website

AI traffic

Tool

Description

get_geo_traffic_overview

Crawler and AI-referral totals, sources and daily timeseries

get_geo_traffic_log

Most recent individual AI crawler/referral requests

list_geo_traffic_journeys

Sessions grouped by journey

get_geo_traffic_journey

Every event in one journey

list_geo_traffic_pages

Most visited pages by AI traffic

get_geo_ingest_setup

Tracking install snippets and ingest endpoint

issue_geo_ingest_token

Issue the tracking token

rotate_geo_ingest_token

Rotate the token, invalidating all previously issued tokens

Feedback

Tool

Description

submit_feedback

Send a bug report, feature request, question or praise to the Notra inbox (no auth)

Available Tools

30 tools
create_chatAInspect

Start a new chat and return the assistant's reply text with the chat ID when available

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel to use for the reply
contextNoRepository or Linear context to attach to the chat
messageYesMessage to send
timezoneNoIANA timezone for contextual responses
thinkingLevelNoThinking budget level
enableThinkingNoWhether to enable model thinking
externalChannelIdNoExternal channel to associate with the chat

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint=false, indicating non-destructive. The description adds that it returns the reply text and chat ID, but does not disclose other behavioral traits such as cost, rate limits, or whether it modifies any state beyond creation. With annotations covering safety, the description provides marginal added value.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the essential action and return value with no wasted words. It is highly concise and structured effectively.

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 tool with 7 parameters and no output schema, the description provides minimal information about the return format (e.g., structure of reply text and chat ID, what 'when available' means). While the high schema coverage partially compensates, the description lacks details on how parameters like context, thinkingLevel, or externalChannelId affect behavior. It is adequate but not fully complete.

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

Parameters3/5

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

Schema description coverage is 100%; all parameters have descriptive schema entries. The tool description adds no additional parameter details beyond what the schema already provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Start' and the resource 'new chat', and specifies what is returned (reply text and chat ID). It effectively distinguishes this tool from siblings like post_chat_message (for continuing existing chats) by emphasizing 'new chat'.

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

Usage Guidelines3/5

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

The description implies usage for starting new chats but does not explicitly state when to use alternatives or provide context on prerequisites. No mention of when not to use this tool or comparisons with siblings like list_chats or post_chat_message.

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

create_github_integrationCInspect

Connect a GitHub repository as an integration for content generation

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesGitHub repository name
ownerYesGitHub repository owner (user or organization)
tokenNoGitHub personal access token for private repos
branchNoDefault branch (auto-detected if not set)

TDQS

C2.9/5.0
Behavior2/5

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

The description does not disclose behaviors beyond the destructiveHint: false annotation. It does not mention that creating an integration stores credentials, may require GitHub permissions, or affects existing integrations. The agent gains no additional insight into side effects or invariants.

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

Conciseness5/5

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

The description is a single sentence of 10 words, making it extremely concise and front-loaded. Every word contributes to the purpose, with no redundant or vague phrasing.

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?

Given the tool's role in setting up a GitHub integration, the description lacks important context: no mention of return value (output schema absent), no explanation of how the integration is used for content generation, and no behavioral notes. The agent may not understand prerequisites or post-conditions.

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?

Since schema description coverage is 100%, the baseline is 3. The description adds no extra meaning beyond the schema; it only gives a high-level context. The parameter details are already in the schema, so the description does not need to compensate.

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 tool's purpose: connecting a GitHub repository as an integration for content generation. It uses a specific verb ('Connect') and resource ('GitHub repository'), and it distinguishes the tool from siblings like delete_integration or list_integrations. However, it could be more explicit about what 'connect' entails, such as storing credentials or creating a record.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as when an integration already exists or which parameters are required. No prerequisites, scenarios, or exclusions are mentioned, leaving the agent to infer usage from context.

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

create_scheduleBInspect

Create a content generation schedule using a cron-style daily, weekly, or monthly trigger

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSchedule name (1-120 characters)
enabledYesWhether the schedule is active
targetsYesRepositories the schedule should target
outputTypeYesType of content to generate
sourceTypeYesSchedule trigger type
autoPublishNoWhether to auto-publish generated content (default false)
outputConfigNoOptional publishing and voice settings
sourceConfigYesCron trigger configuration
lookbackWindowNoTime window for gathering data before generation (default: last_7_days)

TDQS

B3.3/5.0
Behavior2/5

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

Annotations provide only destructiveHint=false. The description fails to disclose behavioral traits beyond creation, such as required permissions, whether the schedule activates immediately, or any side effects. With minimal annotations, the description should supplement, but it does not.

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

Conciseness4/5

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

The description is a single, concise sentence that is front-loaded with the main action. It is efficient but lacks structure to highlight key points.

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?

Given the tool's complexity (9 parameters, nested objects, no output schema), the description is too brief. It does not explain the creation process, expected outcomes, or how it interacts with other schedules. The completeness is inadequate.

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 schema already documents all parameters. The description adds minimal value by mentioning 'cron-style trigger', but it does not explain parameter interactions or defaults beyond what is in 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?

The description clearly states the tool creates a content generation schedule with a cron-style trigger (daily, weekly, monthly). It distinguishes from sibling tools like list_schedules, update_schedule, delete_schedule by specifying the create action and resource type.

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

Usage Guidelines3/5

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

The description implies use when creating a new schedule, but lacks explicit guidance on when not to use or alternatives. It does not mention prerequisites, such as needing existing repositories or integrations, nor does it compare with similar tools like update_schedule.

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

create_skillBInspect

Create a reusable writing skill

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSkill name. Lowercase letters, digits, and hyphens only.
contentYesFull skill instructions, typically Markdown
descriptionYesShort description of when the skill should be used

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=false, indicating a safe operation. The description adds no further behavioral traits, but does not contradict annotations.

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

Conciseness3/5

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

The description is extremely short (5 words) with no fluff, but it sacrifices helpful context. It is concise but insufficiently informative.

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?

No output schema exists, and the description does not explain return values or post-creation behavior. For a simple tool with 3 parameters, it is minimally adequate but omits useful context.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter well-documented. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'create' and resource 'reusable writing skill'. It distinguishes from sibling tools like update_skill and delete_skill. However, it could be more precise about what a writing skill entails.

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 on when to use this tool versus alternatives like update_skill. No prerequisites or context provided.

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

delete_brand_identityB
DestructiveIdempotent
Inspect

Delete a brand identity. Returns any schedules or events that were disabled as a result.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandIdentityIdYesThe brand identity ID to delete

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already mark it as destructive and idempotent. The description adds value by noting that it returns disabled schedules or events, but does not disclose permissions needed, irreversibility beyond deletion, or error behavior (e.g., if brand identity not found).

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

Conciseness4/5

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

The description is short and front-loaded, with one sentence for the action and one for the return. Every sentence provides necessary information, though the second sentence could be clearer about exactly what is returned.

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 destructive tool with no output schema, the description covers the core behavior and return value. However, it lacks details on error cases, dependency behavior, or whether the operation is reversible, leaving potential gaps for the agent.

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% for the single parameter, and the schema description sufficiently describes the parameter. The tool description does not add any extra context about the parameter (e.g., format or constraints), so baseline score 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 clearly states the action (delete) and the resource (brand identity), and distinguishes it from siblings like 'delete_post' or 'delete_schedule' by specifying the resource type. It also mentions the return value (disabled schedules/events).

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

Usage Guidelines2/5

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

No explicit guidance is given on when to use this tool versus alternatives (e.g., updating a brand identity or archiving instead). The description only implies the obvious use case of deletion.

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

delete_integrationA
DestructiveIdempotent
Inspect

Delete a GitHub or Linear integration. Returns any schedules or events that were disabled as a result.

ParametersJSON Schema
NameRequiredDescriptionDefault
integrationIdYesThe integration ID to delete

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already provide destructiveHint and idempotentHint. The description adds that it returns disabled schedules/events, which is helpful but not extensive. No contradiction with annotations.

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

Conciseness5/5

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

The description is two concise sentences with no redundant information, efficiently communicating the tool's purpose and a key outcome.

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 delete tool with one parameter and no output schema, the description covers the main action and return value. Could mention potential errors or prerequisites, but not essential.

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% for the single parameter. The description does not add extra meaning beyond the schema's description of integrationId, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'delete' and the resource 'GitHub or Linear integration', and distinguishes from sibling tools like delete_post or delete_schedule by specifying the integration type.

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

Usage Guidelines3/5

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

The description explains what the tool does and mentions a side effect (returning disabled schedules/events), but does not explicitly state when to use it versus alternatives or when not to use it.

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

delete_postB
DestructiveIdempotent
Inspect

Delete a post by its ID

ParametersJSON Schema
NameRequiredDescriptionDefault
postIdYesThe post ID to delete

TDQS

B3.4/5.0
Behavior2/5

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

Description merely repeats the action 'Delete' without adding context beyond what annotations already provide (destructiveHint). Does not mention irreversibility, associated data impact, or permission requirements.

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

Conciseness4/5

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

Extremely concise with no wasted words. However, slightly under-specified for a destructive action. Efficient but could benefit from a sentence on consequences.

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?

Given the simplicity (one parameter, no output schema), the description is adequate but lacks details on permanence, cascading effects, or idempotency behavior beyond the annotation hint.

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?

Single parameter 'postId' is fully described in the schema with 'The post ID to delete'. Description adds no additional meaning. Schema coverage is 100%, 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?

Description clearly states the verb (Delete), resource (a post), and identifier (by its ID). Distinguishes effectively from sibling tools like update_post, get_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?

No explicit guidance on when to use this tool vs alternatives. However, the purpose is self-evident for a delete operation. Lacks when-not-to-use or prerequisite information.

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

delete_scheduleA
DestructiveIdempotent
Inspect

Delete a content generation schedule by its ID

ParametersJSON Schema
NameRequiredDescriptionDefault
scheduleIdYesThe schedule ID to delete

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already provide destructiveHint=true and idempotentHint=true. The description just confirms 'delete', adding no additional behavioral context beyond what annotations already convey.

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 sentence with no filler words. Every word is necessary and directly contributes to understanding.

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

Completeness5/5

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

Given the tool's simplicity (single required parameter, no output schema), the description is fully adequate. It correctly identifies the action, resource, and parameter.

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% with a clear description for scheduleId. The description's 'by its ID' adds no extra meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'Delete', the resource 'content generation schedule', and the method 'by its ID'. It effectively distinguishes from sibling delete tools like delete_post and delete_brand_identity.

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

Usage Guidelines4/5

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

The description implies usage when you have a schedule ID to delete. While it doesn't explicitly state when not to use or list alternatives, the context of sibling tools (other delete operations) provides sufficient guidance.

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

delete_skillA
DestructiveIdempotent
Inspect

Delete a reusable writing skill by name

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSkill name. Lowercase letters, digits, and hyphens only.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, so description's 'Delete' aligns. Adds context that skill is 'reusable writing skill', but no extra detail on consequences or permissions beyond annotations.

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

Conciseness5/5

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

Single sentence, no wasted words, information is front-loaded. Perfectly concise.

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?

Tool is simple with one parameter; annotations cover idempotent/destructive. Description adequately explains purpose and method. No output schema needed. Complete for its complexity.

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 covers parameter 'name' with full description and pattern. Description only says 'by name', adding no extra semantics. Baseline 3 due to 100% schema coverage.

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?

Description uses specific verb 'delete' and resource 'reusable writing skill' with method 'by name'. Clearly distinguishes from siblings like update_skill, get_skill, list_skills, create_skill.

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?

Implied usage: use when you want to delete a skill. No explicit guidance on when not to use or alternatives, but it's straightforward.

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

generate_brand_identityAInspect

Queue async brand identity generation from a website URL. Notra will scrape the site and extract brand info. Use get_brand_identity_generation_status to poll for completion.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName for the brand identity (1-120 characters)
websiteUrlYesWebsite URL to analyze for brand identity extraction

TDQS

A4.2/5.0
Behavior4/5

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

Annotations show `destructiveHint: false`. The description adds that the tool scrapes the website and extracts brand info, and that the operation is async. This provides good behavioral context beyond the annotation.

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: the first states purpose and mechanism, the second provides follow-up instructions. Every sentence adds value, front-loaded with the key action.

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?

Without an output schema, the description notes the async nature and refers to a status polling tool. It provides enough context for an agent to invoke and monitor the operation, though it does not describe the final output format.

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 baseline is 3. The description mentions scraping the website (related to `websiteUrl`), but does not add semantics for the `name` parameter beyond what the schema provides.

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 the specific verb "Queue async... generation" and the resource "brand identity from a website URL". It clearly distinguishes from siblings like `get_brand_identity` and `get_brand_identity_generation_status`.

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

Usage Guidelines4/5

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

The description explains when to use the tool (to start generation) and provides clear guidance to poll with `get_brand_identity_generation_status`. It does not explicitly list exclusions but gives sufficient context for an async workflow.

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

generate_postAInspect

Queue an async post generation job. Notra will analyze your GitHub activity and generate content. Use get_post_generation_status to poll for completion.

ParametersJSON Schema
NameRequiredDescriptionDefault
githubNoConnected GitHub repositories to analyze. Use owner/repo values returned by list_integrations.
dataPointsNoTypes of data to include in generation
contentTypeYesType of content to generate
brandVoiceIdNoBrand voice ID to use for generation
integrationsNoIntegration IDs to use for generation
repositoryIdsNoRepository IDs to include. Deprecated; prefer integrations.github IDs from list_integrations.
selectedItemsNoSpecific items to include in generation
lookbackWindowNoTime window for gathering data (default: last_7_days)
brandIdentityIdNoBrand identity ID to use
linearIntegrationIdsNoLinear integration IDs to include. Deprecated; prefer integrations.linear.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only mark destructiveHint=false. The description adds that the job is async and requires polling, which is key behavioral information beyond the annotation. It does not detail side effects or what the generated post looks like, but the async disclosure is sufficient.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core action and additional context, with no unnecessary words. 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?

Given the complex schema (nested objects, many optional params) and no output schema, the description provides a high-level overview but misses mentioning other data sources (e.g., Linear) and content types. However, the schema is well-documented, so the description is adequate for an agent to understand the tool's role.

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 input schema fully documents all 10 parameters. The description adds no additional meaning to the parameters, meeting the baseline expectation.

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

Purpose5/5

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

The description clearly states the tool queues an async post generation job, analyzes GitHub activity, and generates content. It distinguishes itself from sibling tools like get_post_generation_status by mentioning polling for completion.

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 explicitly tells the agent to use get_post_generation_status to poll for completion, providing clear context on the async workflow. However, it does not mention when not to use this tool or alternative approaches.

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

get_brand_identityA
Read-only
Inspect

Get a single brand identity by its ID, including tone, audience, and language settings

ParametersJSON Schema
NameRequiredDescriptionDefault
brandIdentityIdYesThe brand identity ID to retrieve

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true. Description adds specific fields returned but doesn't disclose error handling or permissions. No contradiction.

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?

Single sentence, no wasted words, front-loaded with key information.

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

Completeness4/5

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

Given simple tool (1 param, no output schema), description adequately explains what is returned. Could add error scenarios but not essential for this level of complexity.

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 covers 100% of parameters, and description does not add additional meaning beyond what the schema provides.

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?

Clearly states the verb 'Get' and the resource 'brand identity', and specifies what it includes (tone, audience, language settings). Distinguishes from siblings like list_brand_identities.

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?

Implies usage when needing a single identity by ID, but lacks explicit guidance on when to use vs alternatives or when not to use.

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

get_brand_identity_generation_statusA
Read-only
Inspect

Check the status of an async brand identity generation job

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesThe generation job ID to check

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds that the job is async, which is useful context. However, it does not disclose potential error scenarios, possible status values, or behavior if the jobId is invalid. For a simple status check, this may be adequate but not exceptional.

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, well-structured sentence that immediately conveys the purpose. It is concise with no filler, and the key information (check status, async, brand identity, generation job) is front-loaded.

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

Completeness2/5

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

Despite the tool's simplicity, the description lacks information about the return value. Since there is no output schema, the agent would benefit from knowing what the status response includes (e.g., field names like 'status', 'progress', 'error'). The description also does not indicate that this is a polling tool to be used after submission of a generation job.

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 has 100% description coverage (jobId includes a description). The tool description does not add any additional meaning beyond the schema, so it meets the baseline 3. No extra context is provided about how to obtain or format the jobId.

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 'Check the status of an async brand identity generation job' precisely states the action (checking status) and the resource (an async brand identity generation job). The sibling tools include generate_brand_identity (which starts the job) and get_brand_identity (which retrieves a brand identity), so this tool is clearly differentiated as a status polling mechanism.

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

Usage Guidelines3/5

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

The description does not provide explicit when-to-use or when-not-to-use guidance. It is implied that this tool is used after submitting an async brand identity generation job, but no alternatives or prerequisites are mentioned. The sibling tool generate_brand_identity is a natural predecessor, but this relationship is not stated.

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

get_chatA
Read-only
Inspect

Get a single chat session with its messages

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesThe chat ID to retrieve

TDQS

A4.3/5.0
Behavior4/5

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

The readOnlyHint annotation already indicates no destructive behavior; the description adds that messages are returned. However, it does not disclose other behavioral traits like authentication requirements or rate limits, which are not critical for this simple read tool.

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?

Single sentence, front-loaded with key details, no unnecessary words. Highly efficient.

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

Completeness5/5

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

Given the simple tool with one parameter, read-only nature, and no output schema, the description adequately states the purpose and the return value (messages). It is complete enough for effective use.

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% with a clear description for chatId. The tool description does not add additional meaning beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves a single chat session including its messages, distinguishing it from siblings like list_chats (list all) and get_chat_by_external_channel (retrieval by external channel).

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

Usage Guidelines4/5

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

The description implies usage when you have a specific chat ID, but does not explicitly state when not to use it or mention alternatives. The context with siblings provides clarity but the description itself could be more explicit.

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

get_chat_by_external_channelA
Read-only
Inspect

Get a chat session by Discord or Slack external channel ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesExternal channel ID
sourceYesExternal channel source

TDQS

A3.9/5.0
Behavior3/5

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

Annotations provide readOnlyHint=true, which covers the safety profile. The description adds that it retrieves a chat session by external channel ID but does not disclose additional behaviors like auth needs, rate limits, or error handling. The burden is partially met by annotations.

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

Conciseness5/5

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

The description is a single concise sentence with no wasted words. It is front-loaded and clearly communicates the tool's purpose.

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

Completeness3/5

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

The tool is simple but has no output schema, and the description does not explain return values or error cases. Given the context signals (2 params, no nested objects), the description is adequate but not fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description does not add meaning beyond the schema; it merely restates the lookup method. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'chat session', and specifies the lookup method by external channel ID from Discord or Slack. It distinguishes from siblings like get_chat (likely internal ID) and list_chats.

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 indicates when to use this tool (when you have an external channel ID from Discord or Slack). However, it does not explicitly exclude cases where you have an internal ID or need to list chats, so there is room for improvement.

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

get_postA
Read-only
Inspect

Get a single post by its ID, including full content in HTML and markdown

ParametersJSON Schema
NameRequiredDescriptionDefault
postIdYesThe post ID to retrieve

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description properly aligns with that. It adds value by specifying that the response includes HTML and markdown content, but does not mention other behavioral traits such as rate limits or required scopes. Adequate but not comprehensive.

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, clear sentence that immediately conveys the purpose and content format. It is efficient with no wasted words.

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

Completeness4/5

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

For a simple read tool with one parameter and readOnlyHint, the description adequately covers the core functionality and return content format. However, it does not specify other return fields (e.g., metadata, author), which might be useful but not critical. The tool is contextually complete enough for most agents.

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 provides a clear description for the only parameter 'postId'. The tool description merely echoes 'by its ID', adding no new semantics. With 100% schema coverage, the description does not need to compensate further, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'a single post', and the identifying criterion 'by its ID'. It also notes the format of the returned content (HTML and markdown), which differentiates it from listing or mutation tools. No ambiguity.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives like list_posts or get_post_generation_status. The purpose is clear enough to infer appropriate usage when a specific post's full content is needed, but no exclusion criteria or context is given.

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

get_post_generation_statusA
Read-only
Inspect

Check the status of an async post generation job. Returns job status and event log.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesThe generation job ID to check

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare `readOnlyHint: true`, indicating a safe read operation. The description adds that it returns job status and event log, but no additional behavioral traits (e.g., idempotency) are disclosed.

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

Conciseness5/5

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

The description is two short sentences, front-loaded with the core purpose. No unnecessary words or redundancy.

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

Completeness4/5

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

For a simple one-parameter tool with no output schema, the description covers the main action and return type. It could be more detailed about status values or event log format, but it is functionally adequate.

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%, with the parameter 'jobId' already described as 'The generation job ID to check'. The description adds no further semantic detail 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?

The description clearly states the tool checks the status of an async post generation job and returns job status and event log. It distinguishes itself from siblings like 'generate_post' and 'get_brand_identity_generation_status' by specifying 'post generation'.

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

Usage Guidelines3/5

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

The description implies usage when checking status of an async post generation job but does not provide explicit when-to-use or when-not-to-use guidance, nor mentions alternatives like 'get_brand_identity_generation_status'.

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

get_skillA
Read-only
Inspect

Get a single reusable writing skill by name

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSkill name. Lowercase letters, digits, and hyphens only.

TDQS

A3.8/5.0
Behavior3/5

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

The annotations declare 'readOnlyHint: true', so the description aligns by stating 'Get', confirming a read-only operation. However, the description does not add behavioral context beyond what the annotations already convey, such as permissions, rate limits, or side effects. With annotations covering safety, a score of 3 reflects no additional value.

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, compact sentence that conveys the essential purpose. It uses no unnecessary words, and the critical information is front-loaded ('Get a single reusable writing skill'). Every element serves a purpose.

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 retrieval tool with one parameter and no output schema, the description provides sufficient information to understand the tool's function and input. It could optionally mention what is returned (e.g., 'Returns the skill object'), but the lack of that detail is minor given the tool's simplicity and the clarity of the purpose.

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 has 100% parameter description coverage, with the 'name' parameter fully documented (pattern, length constraints, allowed characters). The tool description adds the context 'reusable writing skill' but does not supplement parameter meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description 'Get a single reusable writing skill by name' uses a specific verb ('Get'), identifies the exact resource ('single reusable writing skill'), and the input schema confirms retrieval by a unique identifier ('name'). This clearly distinguishes it from sibling tools like 'list_skills' (which retrieves all skills) and mutation tools ('create_skill', 'update_skill', 'delete_skill').

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

Usage Guidelines3/5

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

The description implies usage when a specific skill name is known, but it lacks explicit guidance on when to use this tool versus alternatives like 'list_skills' (for browsing) or direct comparisons to sibling actions. No criteria or exclusions are provided, relying solely on the tool's name and brief description.

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

list_brand_identitiesA
Read-only
Inspect

List all brand identities configured for your organization

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, so description adds no new behavioral context. No contradictions. Minimal disclosure beyond annotations.

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

Conciseness5/5

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

Single sentence, front-loaded verb and resource, no redundancy. Every word 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?

Adequate for a zero-parameter, read-only list tool. Could mention return structure but not required given simplicity and annotations.

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

Parameters4/5

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

No parameters exist and schema coverage is 100%, fulfilling the baseline. Description does not add extra info, but none is needed.

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

Purpose5/5

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

Description clearly specifies verb 'list', resource 'brand identities', and scope 'configured for your organization'. Distinguishes from siblings like get_brand_identity (single) and creates/updates/deletes.

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?

Implicitly states usage for listing all brand identities, but lacks explicit guidance on when not to use (e.g., for a single identity) or alternatives. Context from sibling names partially compensates.

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

list_chatsA
Read-only
Inspect

List chat sessions for your organization

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, so the description's 'List' is consistent but adds no extra behavioral traits (e.g., pagination, limits). Minimal value beyond annotations.

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

Conciseness4/5

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

Single sentence with no wasted words. However, it could benefit from slight elaboration on scope or behavior without sacrificing conciseness.

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

Completeness4/5

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

Given the simplicity (no parameters, no output schema), the description adequately states that it lists all chat sessions for the organization. It is sufficient for understanding the tool's purpose.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100%. Baseline of 4 is appropriate; description is not needed for parameter semantics.

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

Purpose5/5

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

The description clearly specifies the action ('List') and the resource ('chat sessions'), with organizational scope. It distinguishes from siblings like 'get_chat' (single entity) and 'create_chat' (write operation).

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 on when to use this tool versus alternatives (e.g., get_chat). The description is minimal and does not provide context or exclusions.

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

list_integrationsA
Read-only
Inspect

List all connected integrations (GitHub, Slack, Linear) for your organization

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, so agent knows it's safe. Description adds no additional behavioral context beyond the verb 'List', which is already implied.

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?

Single sentence with no wasted words, directly stating purpose and examples.

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?

Although there is no output schema, the tool is simple and the description covers the main purpose. Could mention that the result is an array of integrations, but not necessary.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100% trivially. Baseline is 4 as per rules for zero parameters.

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?

Description uses specific verb 'List' and resource 'all connected integrations', explicitly enumerating examples (GitHub, Slack, Linear), clearly distinguishing from sibling tools like delete_integration or create_github_integration.

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?

No explicit exclusions or alternatives, but the simplicity of the tool makes usage obvious: call when needing to see all integrations. Context is clear enough.

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

list_postsA
Read-only
Inspect

List posts from Notra with optional filters for sorting, pagination, status, content type, and brand identity

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
sortNoSort by creation date
limitNoItems per page (1-100, default 10)
statusNoFilter by status using a comma-separated list
contentTypeNoFilter by content type using a comma-separated list
brandIdentityIdNoFilter by brand identity ID using a comma-separated list

TDQS

A4/5.0
Behavior4/5

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

The readOnlyHint annotation already indicates it is a safe read operation. The description adds the context of optional filters, but does not disclose further behavioral details like pagination limits or sorting defaults. Given the annotation, this is sufficient.

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, well-structured sentence that conveys the main purpose and filter capabilities. No redundant information.

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 list tool with six optional parameters and no output schema, the description covers the main action and filter options. It does not describe the return format, but that is common for such tools and likely inferred from 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 coverage is 100% with clear descriptions for each parameter. The tool description briefly enumerates filter types but adds no new semantic information beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'posts from Notra'. It also specifies the optional filters (sorting, pagination, status, content type, brand identity), distinguishing it from single-post retrieval tools like get_post.

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

Usage Guidelines3/5

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

The description implies usage for listing multiple posts with filters but does not explicitly state when to use this tool over alternatives (e.g., get_post for single posts). No exclusions or context provided.

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

list_schedulesA
Read-only
Inspect

List scheduled content generation jobs, optionally filtered by repository IDs

ParametersJSON Schema
NameRequiredDescriptionDefault
repositoryIdsNoOnly return schedules targeting these repository IDs

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description doesn't need to disclose that. It adds the optional filtering behavior, which is useful. However, no other behavioral traits (e.g., pagination, sorting, response format) are described. The description does not contradict annotations.

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

Conciseness5/5

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

The description is a single sentence with no extraneous words. It front-loads the action and purpose, making it efficiently scannable.

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

Completeness4/5

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

Given the tool's simplicity (one optional parameter, no output schema), the description adequately covers the essential purpose and filter. It could mention the return type but is still reasonably complete for a list operation.

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% for the one parameter, so the schema already explains 'repositoryIds'. The description echoes this by saying 'optionally filtered by repository IDs', adding no new meaning beyond the schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb (List) and resource (scheduled content generation jobs), with optional filtering by repository IDs. It distinguishes from sibling tools by specifying 'scheduled content generation jobs', which is distinct from other list tools like list_posts, list_brand_identities, etc.

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

Usage Guidelines3/5

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

The description mentions an optional filter, which gives some usage context, but there is no explicit guidance on when to use this tool versus alternatives. No 'when not to use' or alternative tool references are provided.

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

list_skillsA
Read-only
Inspect

List reusable writing skills for your organization

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, consistent with 'list'. The description adds no further behavioral details (e.g., pagination, sorting), missing an opportunity to add value beyond annotations.

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

Conciseness5/5

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

A single sentence of 7 words, perfectly concise and front-loaded with the essential purpose. No wasted text.

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

Completeness3/5

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

The tool is simple with no parameters, but the absence of an output schema means the description should hint at return values or structure. It does not, leaving some ambiguity about what is returned.

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

Parameters4/5

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

With zero parameters and 100% schema coverage, the description is not required to add parameter details. Baseline score of 4 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 clearly states the tool's action ('list') and resource ('reusable writing skills'), distinguishing it from sibling CRUD tools like 'create_skill' or 'delete_skill'.

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

Usage Guidelines3/5

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

The description implies usage for viewing available skills but provides no explicit guidance on when to use this versus alternative tools, nor any prerequisites or exclusions.

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

post_chat_messageBInspect

Post a message to an existing chat and return the assistant's reply text

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel to use for the reply
chatIdYesThe chat ID to send a message to
contextNoRepository or Linear context to attach to the chat
messageYesMessage to send
timezoneNoIANA timezone for contextual responses
thinkingLevelNoThinking budget level
enableThinkingNoWhether to enable model thinking
externalChannelIdNoExternal channel to associate with the chat

TDQS

B3.4/5.0
Behavior2/5

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

Annotations only provide destructiveHint=false, so the description carries the transparency burden. It discloses that the tool posts a message and returns the reply, but does not explain synchronous behavior, permission requirements, or side effects. Many optional features like context, thinking, and external channels are ignored.

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

Conciseness5/5

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

The description is a single sentence with zero wasted words, making it extremely concise and front-loaded. Every word contributes to understanding the core action.

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?

Given the tool's complexity (8 parameters, no output schema), the description is too minimal. It does not mention the behavior of optional parameters like model, context, thinking, or the return format beyond 'reply text', leaving the agent under-informed.

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?

All 8 parameters have schema descriptions (100% coverage), so the description adds no additional semantic value beyond what is already in the input 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?

The description clearly states the verb 'Post a message' to an existing chat and specifies the outcome 'return the assistant's reply text'. It distinguishes from sibling tools that list, get, or create chats, and from post-generation tools.

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

Usage Guidelines3/5

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

The description implies usage when an existing chat ID is available, but does not explicitly guide when to use this tool versus alternatives like 'create_chat' for new chats or 'get_chat' for reading messages. No exclusion criteria are provided.

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

submit_feedbackAInspect

Send product feedback, a bug report, or a feature request to the Notra team

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesFeedback, bug report, or feature request to send to the Notra team
sentimentNoOptional sentiment accompanying the feedback

TDQS

A3.6/5.0
Behavior3/5

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

The annotations indicate destructiveHint=false, and the description confirms a non-destructive 'send' action. However, no additional behavioral traits are disclosed (e.g., whether feedback is stored, if there are rate limits, or if confirmation is returned). The description is consistent with annotations.

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

Conciseness5/5

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

The description is a single, clear sentence with no unnecessary words. It efficiently conveys the tool's purpose without repetition.

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

Completeness4/5

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

Given the tool's simplicity (two parameters, no output schema), the description is largely complete. It covers the what and to whom. However, it does not mention the response or any side effects, which would be useful for a complete understanding.

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 description adds minimal value beyond the schema. The 'message' parameter is described similarly in both. The 'sentiment' enum values are not explained in the description, but the schema lists them. No additional meaning is provided.

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

Purpose5/5

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

The description clearly states the action ('Send') and the objects ('product feedback, a bug report, or a feature request') and specifies the target ('Notra team'). It distinguishes itself from siblings as no other tool handles feedback submissions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. For a simple feedback submission tool, some context (e.g., 'Use this to send feedback; for other issues use support') would be helpful.

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

update_brand_identityA
DestructiveIdempotent
Inspect

Update a brand identity's settings including name, tone, audience, language, and more

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoBrand identity name (1-120 characters)
audienceNoTarget audience description (min 10 chars)
languageNoContent language
isDefaultNoSet as default brand identity
customToneNoCustom tone description
websiteUrlNoWebsite URL
companyNameNoCompany name
toneProfileNoTone profile preset
brandIdentityIdYesThe brand identity ID to update
companyDescriptionNoCompany description (min 10 chars)
customInstructionsNoCustom instructions for content generation

TDQS

A3.6/5.0
Behavior3/5

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

Annotations provide destructiveHint=true and idempotentHint=true, which already disclose key behavioral traits. The description adds no further transparency about side effects or behavior, but does not contradict annotations. Additional context would be helpful but is not critical given the annotations.

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

Conciseness4/5

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

A single sentence with no filler, but it could be slightly more informative while remaining concise. It achieves a good balance.

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 minimal for a tool with 11 parameters and no output schema. It does not explain partial updates, idempotency, or return value. However, annotations partly compensate. Adequate but with clear 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?

Schema coverage is 100%, so the input schema already describes all 11 parameters. The description only lists a few fields without adding meaning beyond what's in the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the action 'Update' and resource 'brand identity', and lists example fields. It distinguishes from sibling tools like get_brand_identity (read), delete_brand_identity (delete), generate_brand_identity (create).

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. The description implies modification of existing brand identity but does not provide context about prerequisites or when not to use it.

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

update_postA
DestructiveIdempotent
Inspect

Update a post's title, markdown content, or publication status

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoNew URL slug (lowercase kebab-case)
titleNoNew title (1-120 characters)
postIdYesThe post ID to update
statusNoSet status to draft or published
markdownNoNew markdown content

TDQS

A3.9/5.0
Behavior3/5

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

The description matches the annotations (idempotentHint and destructiveHint) but adds no extra behavioral context (e.g., whether partial updates are allowed, error handling, or side effects). With annotations already covering the safety profile, the description is adequate but not enriched.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the verb and resource, then lists the affected fields. No redundant information, and every word is functional.

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 the core purpose but omits return value details (since no output schema), error conditions, or permissions. For a tool with multiple parameters and no output schema, additional context (e.g., what the response looks like) would improve completeness.

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 schema already documents each parameter. The description merely lists the fields ('title, markdown content, or publication status') without adding details like examples, dependencies, or formatting rules. This is baseline value.

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

Purpose5/5

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

The description clearly states the action ('Update a post') and specifies the editable fields ('title, markdown content, or publication status'), making the tool's purpose unambiguous. It differentiates from siblings like delete_post (delete) and generate_post (create).

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

Usage Guidelines4/5

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

The description implies the tool is for updating post attributes but does not explicitly state when not to use it or compare with alternatives like bulk updates. No exclusions or alternatives are named, but the context is clear.

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

update_scheduleB
DestructiveIdempotent
Inspect

Update an existing content generation schedule

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSchedule name (1-120 characters)
enabledYesWhether the schedule is active
targetsYesRepositories the schedule should target
outputTypeYesType of content to generate
scheduleIdYesThe schedule ID to update
sourceTypeYesSchedule trigger type
autoPublishNoWhether to auto-publish generated content (default false)
outputConfigNoOptional publishing and voice settings
sourceConfigYesCron trigger configuration
lookbackWindowNoTime window for gathering data before generation (default: last_7_days)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations include idempotentHint=true and destructiveHint=true, which indicate safe retry and potential mutation. The description adds no additional behavioral context (e.g., field overwrites, validation), but does not contradict annotations.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. However, for a tool with 10 parameters, slightly more context could be beneficial without harming conciseness.

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?

Given the tool's complexity (10 parameters, nested objects, 7 required fields) and no output schema, the description is too minimal. It does not explain update behavior, key constraints, or required prerequisites.

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 baseline is 3. The description does not add any parameter-level meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the verb 'update' and the resource 'existing content generation schedule', distinguishing it from siblings like create_schedule and delete_schedule.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., create_schedule for new schedules, delete_schedule for removal). The agent must infer usage 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.

update_skillC
DestructiveIdempotent
Inspect

Update a reusable writing skill by name

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew skill name
contentNoUpdated full skill instructions
currentNameYesCurrent skill name to update
descriptionNoUpdated short description

TDQS

C2.9/5.0
Behavior2/5

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

Annotations provide idempotentHint and destructiveHint, but the description adds no behavioral context beyond stating 'Update'. No mention of side effects, required permissions, or error states.

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

Conciseness4/5

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

The description is a single sentence with no unnecessary words. It is concise but could benefit from including key aspects like the fact that it modifies an existing skill.

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 destructive tool with 4 parameters and no output schema, the description is too minimal. It does not cover return values, what fields are optional, or what happens if the skill does not exist.

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% with descriptions for all parameters. The description adds no extra meaning beyond 'by name', which ties to currentName. No additional parameter semantics are provided.

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), the resource (reusable writing skill), and the method (by name). It distinguishes from siblings like create_skill and delete_skill, though it does not explicitly differentiate from get_skill or list_skills, which are read-only.

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 on when to use this tool versus alternatives such as create_skill or delete_skill. There is no mention of prerequisites, exclusions, or context for use.

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. Dates show when Glama detected each change.

  1. 30 tool updatesv1.0.8
    • First observedcreate_chat
    • First observedcreate_github_integration
    • First observedcreate_schedule
    • First observedcreate_skill
    • First observeddelete_brand_identity
    • First observeddelete_integration
    • First observeddelete_post
    • First observeddelete_schedule
    • First observeddelete_skill
    • First observedgenerate_brand_identity
    • First observedgenerate_post
    • First observedget_brand_identity
    • First observedget_brand_identity_generation_status
    • First observedget_chat
    • First observedget_chat_by_external_channel
    • First observedget_post
    • First observedget_post_generation_status
    • First observedget_skill
    • First observedlist_brand_identities
    • First observedlist_chats
    • First observedlist_integrations
    • First observedlist_posts
    • First observedlist_schedules
    • First observedlist_skills
    • First observedpost_chat_message
    • First observedsubmit_feedback
    • First observedupdate_brand_identity
    • First observedupdate_post
    • First observedupdate_schedule
    • First observedupdate_skill

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct resource or action. Post, brand identity, integration, schedule, chat, skill, and feedback tools are clearly separated. Async generation and status polling are paired cleanly, avoiding ambiguity.

Naming Consistency4/5

Most tools follow a verb_noun pattern (e.g., delete_post, create_skill). Minor inconsistencies: 'create_github_integration' is more specific than 'delete_integration', and 'submit_feedback' deviates from the create/update/delete pattern.

Tool Count4/5

30 tools cover multiple subdomains (posts, brand, integrations, schedules, chats, skills, feedback). While slightly high, each tool serves a clear purpose and most CRUD operations are present, making the count reasonable.

Completeness4/5

Core CRUD operations are present for posts, brand identities, skills, schedules, and chats. Async generation with polling is implemented. Missing update/delete for integrations and feedback lifecycle (no list/update/delete for feedback) are minor gaps.

Maintenance

ActivityActive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/usenotra/notra-mcp'

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