Skip to main content
Glama

Founders OS

Open-source MCP server for startup and small business founders.

Founders OS gives you a complete business context - CRM, projects, tasks, finances, feeds, memory, playbooks - accessible from Claude, Cursor, or any MCP-compatible AI client. One connection, your entire business.

Built by OurThinkTank. Marketing site at foundersmcp.com.

New to AI tools, or handing this to someone who is? Start with Read This First - a plain-language intro to what FoundersOS is and isn't, what AI assistants can and can't do, and the habits that keep them honest.

What's Included

Module

Tools

Description

CRM

13

Customers, contacts, interactions, pipeline dashboard

Tasks

12

Tasks with entity linking, AI assignment, dependencies, progress notes

Projects

5

First-class project records anchored on a project tag, with task rollups

Playbooks

11

Reusable orchestration templates that fan out to tasks and external MCP actions

Tags

4

Shared tag registry with soft validation and auto-registration

Financial

14

Double-entry ledger, P&L, multi-company, per-user access control

Feeds

13

RSS/Atom/JSON reader, briefings, bookmarks, pins

Memory

5

Semantic memory with personal + org scopes, pgvector, dedup, metadata filters

Surfaces

6

Cross-domain reads: session start, entity cards, weekly retro, stuck list, session checkpoints, project history

Members

4

Org membership directory, owner designation

Audit + Restore

2

Full audit log; soft-delete recovery

Diagnostic

5

Ping, version, usage guide, capability explorer, demos

94 tools total across 12 modules.

Related MCP server: semantic-memory

Quick Start

You need a Supabase project, an embedding API key (OpenAI by default), and an MCP-capable AI client.

1. Set up Supabase

Create a Supabase project, then in the SQL Editor run supabase/setup.sql. This single file sets up the full schema from scratch — extensions (vector, uuid-ossp, pg_trgm), all tables, indexes, RLS policies, functions, views, maintenance jobs, and the Data API grants required for compatibility with Supabase's removal of automatic default privileges for projects created on or after 2026-05-30. The wizard at foundersmcp.com/setup prints the same SQL with the embedding dimension already matched to your provider — prefer it if you are not using the default dimension.

2. Connect your AI client

The Founders OS MCP server runs through npx. Every client - Claude Desktop, Cowork, Cursor, Continue.dev, Zed, or any spec-compliant MCP client - uses the same configuration.

The quickest way is the wizard at foundersmcp.com/setup: enter your Supabase and embedding credentials and it generates a filled-in config for you to copy or download. Your credentials never leave the browser. You can also paste the block below by hand.

Drop this into your client's mcp.json (in Claude Desktop, this is the MCP servers section of your config):

{
  "mcpServers": {
    "founders-os": {
      "command": "npx",
      "args": ["-y", "@ourthinktank/founders-os@latest"],
      "env": {
        "SUPABASE_URL": "https://your-project.supabase.co",
        "SUPABASE_SECRET_KEY": "sb_secret_...",
        "FOUNDERS_OS_COMPANY_ID": "your-company",
        "FOUNDERS_OS_USER_ID": "your-name",
        "FOUNDERS_OS_TIMEZONE": "America/Los_Angeles",
        "EMBEDDING_PROVIDER": "openai",
        "EMBEDDING_MODEL": "text-embedding-3-small",
        "EMBEDDING_DIM": "1536",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

See Environment variables for the full list and provider options.

3. Try it

What can you do?                                  -> show_capabilities
Catch me up                                       -> get_session_start
Add Acme Corp as a new prospect                   -> add_customer
Log a call with Sarah at Acme - discussed pricing -> log_interaction
Create a task to send the proposal by Friday      -> create_task + link_task
What's stuck or overdue?                          -> get_stuck_list
Show me everything about Acme Corp                -> get_entity_card
Remember for the org: targeting SMB fintech in Q3 -> memory_store
Show me OTT's P&L for Q1                          -> get_pl_report
Run the customer-onboarding playbook for Acme     -> run_playbook
Give me my weekly retro for LinkedIn              -> get_weekly_retro
Let's checkpoint - wrap up this session           -> checkpoint
What's happened on founders-os lately?            -> get_project_history

CRM (13 tools)

Pipeline management for customer organizations and the contacts inside them. Customers are organizations; contacts are people - always separate records, so you can move a contact between customers without losing history.

Customers: add_customer, get_customer, update_customer, remove_customer, search_customers, list_customers

Contacts: add_contact, update_contact, remove_contact, search_contacts

Interactions: log_interaction, list_interactions

Dashboard: get_dashboard

Pipeline phases: prospect -> lead -> opportunity -> customer -> renewal (plus churned, inactive).


Tasks (12 tools)

Unified task management with org and personal scopes, entity linking, AI assignment, task dependencies, progress notes, and a task-to-memory bridge.

create_task, get_task, update_task, complete_task, remove_task, list_tasks, link_task, unlink_task, list_entity_tasks, add_task_note, assign_task, get_task_summary

Scopes: org (team-visible, default) and personal (private to creator).

AI assignment: Use @claude or @gpt as the assignee. get_task_summary surfaces a dedicated AI work queue. list_tasks(assigned_to='@claude') filters to AI-assigned work.

Dependencies: Set blocked_by_task_id on a task. Completing the blocker surfaces unblocked_tasks in the response.

Task-to-memory bridge: When completing a task, set store_as_memory=true to persist the completion note as an org-scoped memory entry.

Entity linking: Tasks can link to customers, contacts, interactions, transactions, projects, playbooks, memories, or any other entity type via the task_links junction table. Link at creation time or later with link_task.


Projects (5 tools)

Projects are first-class records anchored on a project tag (e.g. #acme-rebuild). get_project returns the project card with status, the linked tag, recent tasks grouped by status, and any customers tagged into it.

create_project, get_project, update_project, remove_project, list_projects

list_projects also flags any #-prefixed tags in the registry that don't yet have a project record, so the registry and the projects directory stay in sync.


Playbooks (11 tools)

Named, reusable orchestration templates. A playbook is defined once and run against a customer (or other subject) to spin up a complete project: it creates native Founders OS tasks AND, when connected MCP tools are present, fires external actions like creating a GitHub repo, posting to Slack, or scheduling a calendar event. If a connector is not available, the step gracefully falls back to a tagged [manual] task so the playbook still works.

create_playbook, get_playbook, update_playbook, remove_playbook, list_playbooks, add_playbook_step, update_playbook_step, remove_playbook_step, run_playbook, get_playbook_run, list_playbook_runs

Step types: native_task (Founders OS task) or external_action (MCP tool call). External steps carry a connector, an action, and a params object with placeholders.

Placeholders: {{customer.name}}, {{customer.slug}}, {{playbook.start_date}}, {{playbook.start_date+Nd}}, {{contact.primary.name}}, {{memory:key}} resolved at runtime.

Run log: get_playbook_run returns the full execution log; list_playbook_runs shows history per playbook.


Tags (4 tools)

Shared tag registry with soft validation. Tags are advisory: unrecognized tags warn but never block operations, and new tags auto-register on first use.

list_tags, create_tag, rename_tag, remove_tag

Conventions: #project-name for projects, @person for people, !state for meta-states (e.g. !needs-review). Simple category words like bug or release are fine unprefixed.

Validation checks: typo detection against existing tags, known-contact detection (nudges toward @), known-customer detection (nudges toward entity linking), and state-word detection (nudges toward !).


Financial (14 tools)

Simple double-entry ledger scoped by FOUNDERS_OS_COMPANY_ID, with per-user access control so company books can be opened to specific teammates only.

add_transaction, list_transactions, remove_transaction, add_category, list_categories, remove_category, add_account, list_accounts, remove_account, transfer_between_accounts, get_pl_report, get_financial_summary, get_financial_access, set_financial_access

Multi-company: Set a different FOUNDERS_OS_COMPANY_ID per instance to keep books separate.

Access control: set_financial_access grants or revokes a member's access to a company's financial tools. get_financial_access reports the current grants. By default the owner of a FOUNDERS_OS_COMPANY_ID has access; everyone else is locked out until explicitly granted.


Feeds (13 tools)

Built-in feed reader (RSS, Atom, JSON Feed) with a Postgres-backed store. Subscribe, brief, search, bookmark, pin.

Subscriptions: subscribe_feed, unsubscribe_feed, list_feeds, refresh_feeds, import_starter_feeds, pin_feed, unpin_feed

Items: get_feed_items, read_feed_item, get_feed_briefing

Bookmarks: bookmark_item, remove_bookmark, list_bookmarks

Categories: tech, startups, business, finance, product, design, engineering, ai, crypto, science, news, personal, other.


Memory (5 tools)

Semantic memory backed by pgvector with personal and org scopes, near-duplicate detection, metadata filters, and pagination.

memory_store, memory_recall, memory_update, memory_forget, memory_summarize_and_store

Scopes:

  • org - visible to all team members pointing at the same Supabase project

  • personal - visible only to the user whose FOUNDERS_OS_USER_ID matches

Filters on memory_recall: min_score, source_tool, created_after, created_before, offset, limit, project, scope.

Dedup: memory_store and memory_summarize_and_store check for existing memories with cosine similarity >= 0.92 and surface a conflict with options to force-store or skip.

Embedding providers (set via EMBEDDING_PROVIDER):

Provider

Default model

Dims

Credentials

openai (default)

text-embedding-3-small

1536

OPENAI_API_KEY

bedrock

amazon.nova-2-multimodal-embeddings-v1:0

1024

AWS credential chain

ollama

nomic-embed-text

768

OLLAMA_BASE_URL

Set EMBEDDING_DIM to match the model before running 002_memory_schema.sql. The dimension is permanent - changing providers later requires re-embedding the memory table.


Surfaces (6 tools)

Cross-domain read views that compose data from tasks, CRM, finance, and feeds into ready-to-render dashboards for AI agents.

Tool

What it returns

get_session_start

Orientation dashboard: task signals, AI queue, finance pulse, CRM activity, feed unread counts, suggested actions, first-run flag, and the four-tier rendering contract. Call at the start of every session.

get_entity_card

Complete picture of any entity (customer, contact, transaction, project) with open tasks, recent interactions, and linked records in one call.

get_weekly_retro

Completed-task retrospective grouped by tag with completion notes. Can format as a LinkedIn-ready draft.

get_stuck_list

Surfaces stuck, stale, and overdue tasks that need triage, with days-stale counts and suggested actions.

checkpoint

End-of-session bookend to get_session_start. Returns the ordered wrap-up procedure (summarize, capture repo changes as commit links, store the record, propose follow-up tasks, write the handoff doc), the exact memory call to make, and the previous checkpoint so open items carry forward. Rides memory - no new entity, no migration.

get_project_history

Chronological, newest-first timeline of a project's checkpoints; the "what happened, in order" companion to semantic memory recall. Pass kind: 'all' for every memory, not just checkpoints.


Members (4 tools)

Org membership directory. Maps FOUNDERS_OS_USER_ID slugs to display names, marks the owner of a company, and supports adding or removing members.

add_member, list_members, remove_member, set_member_owner

The owner of FOUNDERS_OS_COMPANY_ID is the default holder of financial access; others get access via set_financial_access.


Audit and Restore (2 tools)

get_audit_log returns the structured audit trail across all domains (creates, updates, deletes, restores, financial access changes, playbook runs).

restore_item reverses a soft delete on any soft-deleted record type, returning the record to its previous state. Use the audit log to find the original delete event and the entity ID to restore.


Diagnostic and Meta (5 tools)

Tool

Description

ping

Connectivity test. Embeds an update notice if a newer package version is available.

get_version

Running package version, rendering contract version, and the latest npm-published version.

get_usage_guide

On-demand reference covering modules, conventions, and common workflows.

show_capabilities

Friendly overview with example prompts for each module.

list_demos

Lists or runs the bundled interactive walkthroughs (welcome tour, conflict resolution, run-my-week, etc.).


Rendering contract

Render-bearing tools include a render field with a four-tier ladder so the AI client picks the most visual output it supports: visual primitive tool (artifact/widget/canvas), inline rich output (HTML/SVG/JSX), markdown table, then prose. The contract ships in three channels in attention-strength order:

  1. Server instructions field at MCP registration - loaded at connect. All spec-compliant MCP clients.

  2. get_session_start.rendering_contract - full ladder text on session orientation. All clients.

  3. Per-response rendering_contract reminder - self-contained short form. Cold-start safety net.

The canonical source lives in packages/mcp-server/src/contract.ts, so every MCP client gets rich rendering through these channels with no plugin required. (A Claude plugin that mirrors the contract at system-prompt position, for stronger adherence in long sessions, is planned for a later release and is not part of this one.) Current contract_version is 4; a mismatch surfaces as contract_version_warning on get_session_start and get_version.


First-run onboarding

When the database is empty, tools attach onboarding hints to their responses. get_session_start detects a fresh install and suggests a guided walkthrough: add a first customer, create a first task, and optionally set up finance accounts. This keeps the experience conversational rather than dumping all 92 tools at once.

For a guided tour of a specific feature, ask the AI to "run the welcome demo" or "show me the conflict-resolution walkthrough" - list_demos returns the bundled interactive scripts.


Environment variables

# Supabase (required)
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SECRET_KEY=sb_secret_...

# Identity - set distinct values per teammate so personal memory scopes work
FOUNDERS_OS_USER_ID=your-name            # defaults to "default"
FOUNDERS_OS_COMPANY_ID=your-company      # defaults to "default"
FOUNDERS_OS_TIMEZONE=America/Los_Angeles # used by date-aware tools and YTD math

# Embedding provider for memory tools
EMBEDDING_PROVIDER=openai                # openai | bedrock | ollama
EMBEDDING_MODEL=text-embedding-3-small   # provider default used if omitted
EMBEDDING_DIM=1536                       # MUST match the vector() size in 002_memory_schema.sql

# OpenAI (required if EMBEDDING_PROVIDER=openai)
OPENAI_API_KEY=sk-...

# Bedrock (uses AWS credential chain - no key needed on AWS with IAM role)
# AWS_DEFAULT_REGION=us-east-1
# AWS_ACCESS_KEY_ID=...
# AWS_SECRET_ACCESS_KEY=...

# Ollama (required if EMBEDDING_PROVIDER=ollama)
# OLLAMA_BASE_URL=http://localhost:11434

Development

# Clone
git clone https://github.com/ourthinktank/founders-os.git
cd founders-os

# Install
npm install

# Build
npm run build

# Watch
npm run dev

Project structure

founders-os/
├── packages/
│   ├── mcp-server/                  # @ourthinktank/founders-os npm package
│   │   ├── src/
│   │   │   ├── index.ts             # Entry point (stdio transport)
│   │   │   ├── supabase.ts          # Database client
│   │   │   ├── contract.ts          # Canonical rendering contract
│   │   │   └── tools/
│   │   │       ├── crm/             # Customers, contacts, interactions, dashboard
│   │   │       ├── tasks/           # Task management
│   │   │       ├── projects/        # Project records
│   │   │       ├── playbooks/       # Reusable orchestration templates
│   │   │       ├── tags/            # Shared tag registry
│   │   │       ├── financial/       # Ledger + access control
│   │   │       ├── rss/             # Feed reader
│   │   │       ├── memory/          # Semantic memory
│   │   │       ├── surfaces/        # Cross-domain reads
│   │   │       ├── members/         # Org directory
│   │   │       ├── audit.ts         # Audit log
│   │   │       ├── restore.ts       # Soft-delete recovery
│   │   │       ├── diagnostic.ts    # Ping + version
│   │   │       ├── meta.ts          # Usage guide + capabilities + demos
│   │   │       ├── first-run.ts     # Empty-database hints
│   │   │       ├── dates.ts         # Date/timezone helpers
│   │   │       └── permissions.ts   # Financial access checks
│   │   └── demos/                   # Interactive walkthrough scripts
├── integrations/
│   └── setup-page/                  # Config wizard hosted at foundersmcp.com/setup
├── supabase/
│   ├── setup.sql                    # Complete schema for fresh installs (run once)
│   └── migrations/                  # Future schema changes (currently empty)
├── docs/                            # Specs and design docs
└── README.md

Local install for testing

Build, then point your MCP client at the local entry instead of npx:

{
  "mcpServers": {
    "founders-os": {
      "command": "node",
      "args": ["/absolute/path/to/founders-os/packages/mcp-server/dist/index.js"],
      "env": {
        "SUPABASE_URL": "https://your-project.supabase.co",
        "SUPABASE_SECRET_KEY": "sb_secret_...",
        "FOUNDERS_OS_USER_ID": "your-name",
        "FOUNDERS_OS_COMPANY_ID": "your-company",
        "EMBEDDING_PROVIDER": "openai",
        "EMBEDDING_DIM": "1536",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Contributing

Founders OS is open source under the MIT license. Outside contributions are not being accepted yet - that's coming soon. In the meantime, issue reports are welcome and very much encouraged: please file them on GitHub. See CONTRIBUTING.md for how to file a good report, and our Code of Conduct. Security issues should go through SECURITY.md, not public issues.

License

MIT - see LICENSE.

Available Tools

102 tools
add_accountAdd AccountA

Create a capital account (e.g. bank account, credit card, wallet).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAccount name (must be unique within the company).
tagsNoTags for categorization and cleanup, e.g. ['demo-financial'].
initial_balanceNoStarting balance. Must be 0 or greater. Default 0.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only describes the creation action ('Create a capital account') but does not disclose any behavioral traits such as side effects, authorization needs, or what happens to existing data. The schema indicates name uniqueness, but this is not mentioned in the description.

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. It is front-loaded with the purpose and examples, with no wasted or redundant information.

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 creation tool with 3 parameters and no output schema, the description covers the purpose but lacks usage guidelines and behavioral transparency. Given no annotations, it is somewhat incomplete but still functional.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond the schema; it only provides example account types. 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 'Create a capital account' and gives specific examples (bank account, credit card, wallet). This distinguishes the tool from sibling tools that create other entities like add_category or add_contact, and from operations like remove_account or list_accounts.

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

Usage Guidelines3/5

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

The description provides implicit usage context through the examples, but does not explicitly state when to use this tool versus alternatives, such as when to use add_transaction or transfer_between_accounts. No when-not guidance is given.

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

add_categoryAdd CategoryB

Create an income or expense category.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCategory name (must be unique within the company).
tagsNoTags for categorization and cleanup, e.g. ['demo-financial'].
typeYesCategory type.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided. Description is minimal and does not disclose behavioral traits like uniqueness enforcement (though schema mentions it), idempotency, 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 single sentence, but could include more context without being verbose. Front-loaded with the essential purpose.

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

Completeness2/5

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

Given no output schema and no annotations, the description lacks completeness. It does not specify what the tool returns (e.g., created category object) or any side effects.

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. Description adds no additional meaning beyond the schema; it just restates the type enum.

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 tool creates a category specifically for income or expense, distinguishing it from sibling tools like add_account or add_contact.

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 remove_category or list_categories. No prerequisites or exclusion criteria mentioned.

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

add_contactAdd ContactB

Add a contact person to a customer organization. Contacts are individuals you interact with at that company.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoRole at the organization, e.g. 'CEO', 'CTO', 'Head of Sales'
emailNoEmail address
phoneNoPhone number
last_nameYesContact's last name
first_nameYesContact's first name
is_primaryNoWhether this is the primary contact for the organization
customer_idYesCustomer UUID this contact belongs to

TDQS

B3.3/5.0
Behavior2/5

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

No annotations exist, so the description must disclose effects. It only says 'Add a contact person' without mentioning side effects, required existing customer, duplicate handling, or success/failure behavior. This is insufficient.

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, no redundancy, front-loaded purpose, and each sentence adds value. Perfectly concise.

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

Completeness3/5

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

With 7 parameters, 3 required, and no output schema, the description provides only basic purpose. Missing guidelines, behavioral details, and any explanation beyond schema. Moderately incomplete but not critically lacking.

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%, and the tool description adds no extra meaning beyond the schema's parameter descriptions. Baseline is 3 as schema covers parameters adequately.

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 'Add a contact person to a customer organization' with a clear verb, resource, and context. It further explains what contacts are, distinguishing it from other 'add_*' tools like add_account or add_customer.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as search_contacts, update_contact, or other add tools. No when-to-use, when-not-to-use, or prerequisite information is provided.

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

add_customerAdd CustomerA

Create a new customer record. Customers are organizations or individuals that your business works with or is pursuing. If similar customers already exist, a conflict response is returned with options to use an existing record or create a new one. Pass skip_duplicate_check=true to bypass this on retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNoZIP code
cityNoCity
tagsNoTags for categorization, e.g. ['saas', 'enterprise']
notesNoGeneral notes about this customer
stateNo2-letter state code
websiteNoWebsite URL
address_line1NoStreet address
address_line2NoSuite, building, etc.
customer_typeNoType of customerother
customer_phaseNoLifecycle phase: prospect, lead, opportunity, customer, renewal, churned, or inactiveprospect
organization_nameYesName of the company, organization, or individual
skip_duplicate_checkNoSet true after conflict resolution to skip duplicate detection and create the customer.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that a conflict response is returned if similar customers exist and that skip_duplicate_check bypasses this. This provides good transparency for a creation tool, though it does not specify the success response or error handling beyond conflicts.

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 long, front-loads the purpose, and contains no unnecessary words. Every sentence adds essential 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 the tool has 12 parameters (1 required) and no output schema, the description covers the primary use case, conflict behavior, and retry mechanism. It does not describe return values or error handling beyond conflicts, but this is sufficient for a creation tool.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the conflict resolution context for skip_duplicate_check but does not elaborate on other parameters beyond what the schema already provides. The conflict handling is the main added insight.

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 explicitly states 'Create a new customer record' and defines customers as organizations or individuals. It distinguishes from sibling tools by detailing the unique conflict detection and skip_duplicate_check behavior.

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 clearly states when to use this tool (to create a new customer) and provides guidance on handling conflicts, including how to bypass duplicate checks on retry. It does not explicitly compare with sibling tools 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.

add_memberAdd MemberA

Add a team member to the company. Creates their company_members row with default access (no financial access, not an owner). Use set_financial_access to grant financial access, and set_member_owner to grant owner status. Requires owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesThe user_id for the new member — must match the FOUNDERS_OS_USER_ID they will set in their MCP config.
display_nameNoHuman-readable name (improves audit log legibility).
financial_accessNoFinancial access level. Defaults to 'none'.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool creates a row with default access (no financial access, not an owner) and requires owner role. This is good, though it could mention behavior on duplicate user_ids or error conditions.

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?

Three sentences, front-loaded with the main action, followed by essential guidance. No extraneous information.

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

Completeness5/5

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

For a tool with 3 parameters, full schema coverage, and no output schema, the description provides sufficient context: purpose, defaults, prerequisites, and pointers to related tools.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds context about default access (implicitly tying to the financial_access parameter) but does not elaborate on individual parameters 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 clearly states 'Add a team member to the company' and specifies the creation of a company_members row with default access. It distinguishes from siblings by explicitly mentioning alternative tools for granting financial access (set_financial_access) and owner status (set_member_owner).

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use this tool (adding a member) and when to use alternatives ('Use set_financial_access...', 'Use set_member_owner...'). Also specifies the required role ('Requires owner role.'), giving clear usage context.

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

add_playbook_stepAdd Playbook StepA

Add an ordered step to a playbook. Steps are either 'native_task' (created in Founders OS when the playbook runs) or 'external_action' (instructions returned for the AI to execute via connected MCP tools like GitHub or Slack). All text fields support {{placeholder}} syntax. Steps are ordered by order_index; append by using a value higher than existing steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes'native_task' creates a task in Founders OS. 'external_action' emits instructions for the AI to execute.
titleYesStep title. Supports {{placeholders}} like {{customer.name}}.
actionNoFor external_action: the action to perform, e.g. 'create_repo', 'create_channel'.
paramsNoFor external_action: connector-specific parameters. Supports {{placeholders}}. Example: { template: 'ourthinktank/web-template', name: '{{customer.slug}}-{{playbook.start_year}}' }
assigneeNoDeprecated: use `assigned_to`.
priorityNoFor native_task: priority. Defaults to 'medium'.
connectorNoFor external_action: the MCP connector to use, e.g. 'github', 'slack', 'calendar'.
due_offsetNoFor native_task: due date offset in days from the playbook start_date. Omit for no due date.
assigned_toNoFor native_task: who to assign to. Use FOUNDERS_OS_USER_ID, '@claude', or '@gpt'.
descriptionNoAdditional context. Supports {{placeholders}}.
order_indexYesPosition in the step sequence. Lower numbers run first.
playbook_idYesPlaybook UUID.
fallback_taskNoFor external_action: task title to create if the connector is unavailable at run time. Always provide this so the playbook degrades gracefully.

TDQS

A4.1/5.0
Behavior3/5

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

Given no annotations, the description carries the full burden. It discloses that steps support {{placeholder}} syntax and are ordered, but it does not mention side effects (e.g., immediate creation, error behaviors, or interactions with playbook runs). Moderate transparency but lacks detail about post-creation effects.

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 three sentences, front-loaded with the core purpose. It is concise and avoids redundancy, providing necessary information without clutter.

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 13 parameters (4 required) and no output schema or annotations, the description covers high-level concepts (types, ordering, placeholders) but misses details like error handling, the deprecated assignee parameter, and state prerequisites. It is adequate but not comprehensive.

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

Parameters4/5

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

Schema description coverage is 100%, providing solid baseline (score 3). The description adds value beyond the schema by clarifying ordering semantics ('append by using a value higher than existing steps') and the distinction between step types. This extra context moves the score to 4.

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 purpose: 'Add an ordered step to a playbook.' It distinguishes between two types (native_task and external_action) and mentions ordering by order_index. This differentiates it from sibling tools like update_playbook_step and remove_playbook_step.

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 each step type (native_task for tasks created in Founders OS, external_action for AI-instruction steps) and how ordering works. It does not explicitly state prerequisites (e.g., playbook must exist) or when not to use it, but the context is clear enough for typical use.

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

add_task_noteAdd Task NoteA

Add a progress note to a task without changing its status. Useful for logging updates, blockers, or partial progress mid-task.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYesThe note content.
task_idYesTask UUID.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool does not change status, which is key behavioral info, but does not mention other aspects like note appending behavior, authentication requirements, or rate limits.

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 action, and every word is necessary and efficient.

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 add operation with two required parameters and no output schema, the description adequately covers purpose and usage context, though it omits details like character limits or overwrite behavior.

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 baseline is 3. The description adds no extra meaning beyond the schema definitions for 'task_id' and 'note'.

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 ('Add a progress note to a task') and explicitly distinguishes from siblings by specifying 'without changing its status', which differentiates it from tools like 'complete_task' or 'update_task'.

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

Usage Guidelines4/5

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

The description provides usage context ('useful for logging updates, blockers, or partial progress mid-task'), implying when to use it, but does not explicitly exclude scenarios or name alternative tools.

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

add_transactionAdd TransactionA

Record an income or expense transaction. Automatically updates the account balance. Provide a positive amount — the sign is applied based on the category type.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesTransaction date in YYYY-MM-DD format.
tagsNoTags for categorization and cleanup, e.g. ['demo-financial'].
amountYesTransaction amount (positive number — sign is derived from category type).
account_idYesUUID of the capital account to debit/credit.
category_idYesUUID of the category (income or expense).
customer_idNoUUID of the customer this transaction is attributed to (e.g. a client payment). Optional.
descriptionYesDescription of the transaction.
exclude_from_reportsNoSet true to exclude from P&L reports (e.g. owner draws). Default false.

TDQS

A3.8/5.0
Behavior3/5

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

Mentions automatic balance update, which is beyond annotations (none provided). However, lacks details on permissions, error conditions, or return behavior.

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

Conciseness5/5

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

Two sentences with no redundant information. Efficiently communicates core purpose and a key usage detail.

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

Completeness2/5

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

With 8 parameters, no output schema, and no annotations, the description is too minimal. Does not address behavior for tags, customer_id, exclude_from_reports, or success/error responses.

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?

Adds clarity beyond schema by explaining sign derivation from category type. Schema already covers 100% of parameters, but description adds meaningful context for amount usage.

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 'Record an income or expense transaction' with specific verb and resource. Distinguishes from siblings like 'add_account' or 'transfer_between_accounts' by focusing on transaction recording.

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?

Provides guidance on providing positive amount and sign derived from category, but does not explicitly state when to use this tool vs alternatives or any exclusions.

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

assign_taskAssign TaskA

Assign or reassign a task to a team member or AI agent. Use a FOUNDERS_OS_USER_ID for humans, '@claude' or '@gpt' for AI agents, or pass an empty string to unassign. A task has exactly one assignee by design - the single accountable owner ('one neck to grab') - so assigning replaces the current owner rather than adding a second. For others who are involved, name them in the task description or use @person tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask UUID.
assigned_toYesUser ID, '@claude', '@gpt', or empty string to unassign. Replaces the single accountable owner; one assignee per task by design.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses a critical behavioral trait: assigning replaces the current owner because a task has exactly one assignee ('one neck to grab'). It also explains how to unassign using an empty string. This goes beyond basic purpose to explain side effects. Lacks info on authorization (who can assign), but that's common and acceptable.

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 long, each earning its place. First sentence delivers the core action and options; second explains the design rationale and alternative usage. No fluff, perfectly front-loaded.

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

Completeness4/5

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

Given the simple 2-parameter schema and absence of output schema, the description covers the essential aspects: what the tool does, how to specify assignees, and the behavioral consequence (replacement). It could optionally mention the return value (e.g., confirmation or updated task), but that is not required with no output schema, and the context signals indicate simplicity.

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

Parameters4/5

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

The input schema has 100% coverage with descriptions for both parameters. The description adds significant value by explaining the FOUNDERS_OS_USER_ID format, acceptable AI agent references ('@claude', '@gpt'), and the empty string for unassignment. It also reinforces the replace behavior, which is not fully captured in the schema alone.

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 explicitly states the action 'Assign or reassign a task' to a specific resource (task). It distinguishes from sibling tools like update_task by focusing solely on the assignee field, and it clarifies the one-assignee design, making the tool's purpose unmistakable.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool: to assign, reassign, or unassign a task. It also offers alternatives by suggesting others involved should be mentioned via @person tags or in the description, effectively guiding the agent away from misuse. However, it doesn't explicitly state when not to use it (e.g., for changing task fields other than assignee), which would have sealed a 5.

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

bookmark_itemBookmark Feed ItemA

Save a feed item for later. Snapshots the item content so it persists beyond the cache. Use the feed_url and item index number from get_feed_items.

ParametersJSON Schema
NameRequiredDescriptionDefault
feed_urlYesURL of the feed containing the item
item_indexYes1-based item number from the get_feed_items list

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must fully convey behavior. It mentions snapshots content and persistence beyond cache, but does not disclose authentication requirements or idempotency.

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, no redundancy. The first sentence states the purpose, the second provides usage instructions. Every word is necessary.

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 write tool with 2 parameters and no output schema, the description sufficiently covers input sourcing and persistent behavior. It could mention potential error cases or idempotency.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by clarifying that 'feed_url' comes from 'get_feed_items' and that 'item_index' is 1-based, which is not 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 uses specific verb 'Save' and specifies the resource 'feed item'. It clearly states the tool's purpose and distinguishes it from siblings like 'remove_bookmark' and 'list_bookmarks'.

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?

It explicitly instructs to use 'feed_url' and 'item_index' from 'get_feed_items', providing clear context. However, it does not state when not to use the tool or mention alternative tools.

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

checkpointCheckpointA

End-of-session bookend to get_session_start. Call when the user says 'checkpoint', 'let's checkpoint', or 'wrap up this session'. Returns the ordered checkpoint procedure for the agent to execute (summarize, capture repo changes as commit links, store the record, propose task candidates, write the handoff doc) plus the exact memory call to make and the previous checkpoint for continuity. This tool does not write anything itself - the agent performs the steps. Pass the project tag so the previous checkpoint can be loaded; if omitted, ask the user which project before storing.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoScope to store the checkpoint under. Defaults to 'org' (team-visible).
authorNoWhose previous checkpoint to carry forward. 'me' (default) returns your own last checkpoint for this project - the right choice for resuming your own thread on a shared team project, so a teammate's session is not picked up by accident. 'anyone' returns the team's most recent checkpoint. The handoff -NN sequence is always counted team-wide regardless of this setting, so shared-repo filenames never collide.
projectNoProject tag for this session (e.g. 'founders-os'). Omit only if unknown - then ask the user.
timezoneNoIANA timezone (e.g. 'America/New_York') for the handoff-doc date.

TDQS

A4.7/5.0
Behavior5/5

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

Without annotations, the description fully bears the burden. It clearly states the tool is read-only ('does not write anything itself') and describes that it returns a procedure for the agent to execute, along with memory call and continuity info. This discloses the key behavioral trait of non-mutation.

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 moderately long but every sentence serves a purpose: stating the trigger, listing the returned procedure components, and explaining how to handle uncertain parameters. It front-loads the core purpose and usage, making it easy to scan. Slightly verbose but not wasteful.

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 no output schema, the description adequately explains what is returned (procedure steps, memory call, previous checkpoint). It covers all parameters with necessary context. While exact format details are omitted, the description provides enough for an agent to understand the tool's role and output.

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?

All four parameters have descriptions in the schema, but the description adds significant context: defaults for scope, detailed explanation of author vs 'anyone' with use-case rationale, instruction to ask user if project omitted, and timezone purpose. This goes beyond the schema's enums and short descriptions.

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

Purpose5/5

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

The description clearly defines the tool as an end-of-session bookend paired with get_session_start, specifying its triggered by user phrases like 'checkpoint' and listing the exact steps it returns. This distinguishes it from sibling tools, particularly get_session_start, by its role as a session closer.

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

Usage Guidelines5/5

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

Explicit guidance on when to call (user phrases) and what the agent must do after receiving the procedure (execute steps, ask for project tag if omitted). It also clarifies that the tool does not write anything itself, setting clear expectations for agent action. No direct alternative comparisons are needed given its unique purpose.

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

complete_taskComplete TaskA

Mark a task as done. Optionally log a completion note. Set store_as_memory=true to persist the completion as an org-scoped memory. Returns unblocked_tasks if completing this task unblocks dependent tasks. If the task is blocked by an incomplete task, a conflict response is returned. Pass force=true to complete anyway after conflict resolution.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoDeprecated: use `resolution: "confirm"`. Set true to skip the blocker check.
task_idYesTask UUID to complete.
resolutionNoConflict resolution: 'confirm' completes despite the blocker, 'cancel' aborts.
memory_projectNoProject tag for the memory entry. Only used when store_as_memory is true.
completion_noteNoSummary of what was done. AI agents should always provide this.
store_as_memoryNoIf true and completion_note is provided, stores the completion as an org-scoped memory.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses key behaviors: marking done, optional notes, memory storage, unblocking tasks, conflict responses, and deprecated force parameter. It lacks details on idempotency (completing an already done task) and permissions, but covers the main actions well.

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 concise (4-5 sentences) and front-loads the primary action. Every sentence provides useful information without redundancy. The structure is logical: main action, optional features, special behaviors, and conflict handling.

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?

Despite no output schema, the description mentions that unblocked_tasks is returned conditionally. It covers the main use cases and conflict resolution thoroughly. Missing details like the exact response format for a successful completion or error messages, but overall adequate for selection and invocation.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant value beyond the schema. It explains the 'conflict' response context, clarifies the interaction between force and resolution, and advises AI agents to always provide completion_note. This enriches understanding of parameter usage.

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 purpose: 'Mark a task as done.' It includes optional actions like logging a note and storing as memory. The sibling list includes update_task and remove_task, and the description distinguishes itself by focusing on completion-specific behavior such as conflict handling and unblocking tasks.

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

Usage Guidelines4/5

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

The description provides clear guidance on when to use the tool (to complete a task) and how to handle conflicts ('if the task is blocked...') with options like force=true or resolution parameter. It does not explicitly state when not to use it or compare to alternatives, but the context is sufficient for selection.

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

create_playbookCreate PlaybookA

Create a new reusable playbook template. A playbook is an ordered set of steps run against a customer to automate project setup. Add steps with add_playbook_step after creation.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable name, e.g. 'New Web Project'.
slugYesURL-safe unique identifier, e.g. 'new-web-project'. Must be unique per company.
descriptionNoWhat this playbook is for and when to use it.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, so description must cover behavior. It only states creation and definition of a playbook, but does not disclose side effects, authentication needs, idempotency, or error conditions. The mention of adding steps afterwards is mildly helpful but insufficient for a mutation tool.

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

Conciseness5/5

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

Two concise sentences front-loading purpose and then providing context and next steps. No unnecessary words or repetition.

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 no output schema and no annotations, the description is moderately complete. It explains what a playbook is and the creation workflow, but lacks details about initial state, reversibility, or permissions. Adequate for a simple creation tool but could be more informative.

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?

Input schema has 100% coverage with descriptions for all three parameters. The description does not add any additional meaning 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?

Clearly states 'Create a new reusable playbook template' with a specific verb and resource. Differentiates from sibling tools like add_playbook_step by noting that steps are added separately after creation.

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 by describing the workflow: create playbook first, then add steps. But does not explicitly state when to use this tool versus alternatives like run_playbook or update_playbook, nor does it provide prerequisites or exclusions.

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

create_projectCreate ProjectA

Register a new project. Auto-creates a #-prefixed tag in the tag registry. Returns a conflict if a project with the same slug already exists. If the user mentions starting or working on a project that doesn't exist in the registry, suggest creating it. Example triggers: 'I'm starting a new project called X', 'working on project X', 'let's kick off X.' Always confirm before creating.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the project (e.g. 'Founders OS', 'Series A').
statusNoProject status. Defaults to 'active'.
descriptionNoWhat this project is about.

TDQS

A4.1/5.0
Behavior4/5

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

Discloses key behavioral traits: auto-creates a tag, returns conflict on duplicate slug, and requires confirmation. No annotations exist, so description carries full burden; it does well.

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?

Concise with 4-5 sentences, each contributing unique value: purpose, side effects, usage guidance, examples, confirmation. Well-structured and front-loaded.

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?

With no output schema and 3 parameters, description covers purpose, side effects, usage triggers, and confirmation behavior. Missing return value details but adequate for the tool's simplicity.

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 3. Description adds context that 'name' leads to slug-based conflict, but does not elaborate on 'status' or 'description' beyond schema. Meets minimum but adds limited extra meaning.

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 'Register a new project' with specific verb and resource. Distinguishes from sibling tools like create_tag or create_task by focusing on project creation. Includes side effects and conflict behavior.

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?

Provides explicit when-to-use scenarios with example triggers ('I'm starting a new project called X') and instruction to always confirm. Does not explicitly state when-not-to-use, but conflict description implies pre-existing projects are not suitable.

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

create_tagCreate TagA

Register a new tag in the tag registry. The slug (lowercase, hyphenated form) must be unique per company. Returns an error if a tag with the same slug already exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the tag (e.g. 'Q2 2026', 'Fundraising').
colorNoHex color for UI rendering (e.g. '#4A90D9'). Optional.
scopeNoTag scope. Defaults to 'org'.
descriptionNoWhat this tag means or when to use it.

TDQS

A3.9/5.0
Behavior3/5

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

Discloses error behavior on duplicate slug, but no annotations are present. Missing details on success response, permissions, or side effects. Basic but not fully transparent.

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 concise sentences with no fluff. Front-loads the core 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?

Covers uniqueness constraint and error case. Lacks output schema and success behavior details, but acceptable for a simple creation tool with well-documented parameters.

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

Parameters2/5

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

Schema coverage is 100%, so parameters are documented. Description adds context about slug uniqueness but introduces ambiguity: slug is not a schema parameter, implying it is derived from name. This may confuse agents.

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 it registers a new tag in the tag registry. The uniqueness constraint on slug distinguishes it from sibling tools like rename_tag and remove_tag.

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 indicates when to use (creating a new tag) and notes uniqueness constraint, but does not explicitly state when not to use or list alternatives.

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

create_taskCreate TaskA

Create a new task. Scope 'org' (default) is visible to all team members; 'personal' is private to the creator. Use assigned_to with a FOUNDERS_OS_USER_ID for human assignment, or '@claude' / '@gpt' for AI assignment. Optionally link to any FounderOS entity (customer, contact, transaction, etc.) at creation time. If the response contains a conflict field, the task was NOT created. Present all options to the user using an interactive chooser (AskUserQuestion) if available, then retry with the selected date.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for filtering and grouping (e.g. ['Q2', 'fundraising']).
linksNoEntities to link this task to at creation time.
scopeNo'org' (default) for team-visible; 'personal' for private.
titleYesWhat needs to be done.
statusNoTask status. Defaults to 'todo'.
due_dateNoDue date (YYYY-MM-DD).
priorityNoPriority level. Defaults to 'medium'.
assigned_toNoWho to assign this to. Use a FOUNDERS_OS_USER_ID for a human, or '@claude' / '@gpt' for AI. A task takes exactly one assignee by design: the single accountable owner, the 'one neck to grab' (ONTG). This is deliberate, not a limitation - work split across several names tends to get done by no one. If several people are involved, still set one owner here and name the others in the description (or tag people you are waiting on with an @person tag).
descriptionNoAdditional details or context.
due_date_dayNoExpected day of the week for due_date. If provided, the server validates it matches. Catches errors when converting 'due Thursday' to a date. Mismatch returns the correct day and nearby alternatives.
blocked_reasonNoRequired context when status is 'blocked'.
blocked_by_task_idNoUUID of a task that blocks this one. Sets status to 'blocked' automatically if not already set.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses scope defaults, assignment rules, linking behavior, and conflict response. It explains design rationale for single assignee. However, it doesn't mention auth requirements or rate limits.

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 relatively concise for its detail, front-loading the main purpose. Each sentence adds value, though it could be more structured. No wasted words.

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 omits the full response structure (e.g., returned task object with ID). It only mentions 'conflict' field. For a create tool with no output schema, this is a gap. Parameter coverage is good, but output missing.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. The description adds value by explaining the single-assignee philosophy, due_date_day validation, and blocked_by_task_id auto-status. It provides extra context 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 explicitly states 'Create a new task' and elaborates on scope, assignment, and linking. It uses a specific verb and resource, clearly distinguishing from siblings like update_task or assign_task.

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

Usage Guidelines4/5

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

The description provides clear guidance on when and how to use the tool, including scope options, assignment formats, linking, and conflict handling. It does not explicitly list alternatives 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.

get_audit_logGet Audit LogA

Read the immutable audit log for this company. Owners can read all entries (scope='all'). Any member can read their own entries (scope='mine'). Covers financial transactions, CRM deletes, org memory changes, playbook runs, access management, and member changes. Records cannot be modified or deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50).
scopeNo'all' returns all company entries (owner-only). 'mine' returns only your own actions (any member). Defaults to 'all' for owners, 'mine' for non-owners.
actionNoFilter by exact action name (e.g. 'add_transaction', 'run_playbook').
domainNoFilter by domain group. 'financial' = transactions, accounts, categories. 'crm' = customer and tag deletes. 'memory' = org-scoped memory store/forget. 'playbooks' = playbook runs. 'access' = financial access changes. 'members' = member add/remove/promote.
to_dateNoReturn entries on or before this date (YYYY-MM-DD).
actor_idNoFilter by the user_id who performed the action.
entity_idNoFilter by the affected record UUID (e.g. a specific account_id or customer_id).
from_dateNoReturn entries on or after this date (YYYY-MM-DD).
entity_typeNoFilter by entity type (e.g. 'financial_transaction', 'customer').

TDQS

A4.4/5.0
Behavior5/5

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

Discloses immutability ('immutable', 'Records cannot be modified or deleted') and lists covered domains. With no annotations, the description fully carries the burden and does so thoroughly.

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?

Concise, well-structured, and front-loaded. Every sentence adds value without redundancy.

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

Completeness5/5

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

For a read-only tool with 9 parameters and no output schema, description covers purpose, behavior, and parameter context comprehensively. No gaps.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds value by explaining domain categories and scope defaults, providing context beyond schema descriptions.

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?

Clearly states 'Read the immutable audit log for this company.' Verb 'read' and resource 'audit log' are specific. Does not explicitly differentiate from sibling read tools, but the resource is unique.

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?

Provides clear context on who can use each scope (owners vs members) and default behavior. No explicit when-not-to-use or alternatives, but no alternative exists for audit log.

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

get_customerGet CustomerA

Get a single customer with their contacts, recent interactions, and open tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYesCustomer UUID

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It discloses that related data is included but fails to mention any side effects, authentication needs, rate limits, or constraints on the returned data (e.g., recency of interactions, completeness of tasks).

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, information-dense sentence. It is concise, front-loaded with the action and resource, and contains no superfluous text.

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 adequately conveys what the tool returns. However, it could be slightly more specific about the scope of 'recent interactions' and 'open tasks' to address completeness expectations.

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 customer_id, which is fully described as 'Customer UUID' in the schema. The description does not add additional meaning beyond the schema, so the 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 action ('Get') and resource ('a single customer'), and specifies the related data included (contacts, recent interactions, open tasks). It implicitly distinguishes from list_customers, which would return multiple customers without such detail.

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 retrieving detailed customer info but does not explicitly state when to use this tool versus siblings like search_customers or list_customers, nor does it mention when not to use it. No alternatives are provided.

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

get_dashboardGet DashboardA

Get a CRM dashboard summary: total customers by type and phase, overdue tasks, recent interactions, and upcoming tasks within a 7/14/30-day window. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoWindow for upcoming tasks in days (7, 14, or 30). Defaults to 7.
timezoneNoIANA timezone string (e.g. 'America/New_York'). Used for timezone-aware date calculations.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description must convey all behavioral traits. It discloses the presence of a 'render field with tiered rendering guidance' and instructs to check it before composing a reply. This is valuable context, though it does not address potential side effects or authentication requirements. Overall, it provides good transparency.

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

Conciseness5/5

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

The description is extremely concise: two sentences that front-load the main purpose and enumerate contents, then add a critical note about the render field. Every sentence serves a purpose with no repetition or filler.

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

Completeness4/5

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

Given the tool's simplicity (two optional parameters, no output schema), the description adequately covers what the tool does and what the response contains. It mentions the key data fields and the special render field. It does not elaborate on response structure, but that is not required without an output schema. The description is complete for an agent to use correctly.

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 covers 100% of parameters with clear descriptions. The description adds no additional meaning beyond what is already in the schema; it restates the window and timezone but not with extra detail. Score at baseline due to full 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?

The description clearly states that the tool gets a CRM dashboard summary and enumerates the specific data included (total customers by type and phase, overdue tasks, recent interactions, upcoming tasks). The term 'dashboard summary' distinguishes it from sibling tools that focus on specific entities like get_customer or get_task.

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 a broad overview of CRM metrics is needed, but it does not explicitly state when to avoid using it or suggest alternative tools. The context of sibling tools (e.g., get_feed_briefing, get_task_summary) provides indirect differentiation, but the description 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_entity_cardGet Entity CardA

Get a complete picture of any entity: the record itself, all open tasks linked to it, recent interactions, and any linked transactions. Replaces multiple separate calls when you need to answer 'what's going on with X?'

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesUUID of the entity.
entity_typeYesType of entity: customer | contact | transaction

TDQS

A4.2/5.0
Behavior4/5

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

Without annotations, the description discloses the behavior: it returns the entity record, open tasks, recent interactions, and linked transactions. It does not detail side effects, permissions, or recency timeframe, but the overall behavior is transparent enough for an agent.

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 efficiently convey the tool's purpose and value. No extraneous 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 no output schema, the description adequately explains what the tool returns and its overarching benefit. It could marginally benefit from mentioning output format or limitations (e.g., recency of interactions), but it is largely complete for agent decision-making.

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 both parameters fully described. The description adds no additional meaning beyond the schema, meeting the baseline expectation but not exceeding it.

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 gets a complete picture of an entity including its record, open tasks, recent interactions, and linked transactions. It specifies the verb and resource, and explicitly distinguishes from multiple separate calls, answering 'what's going on with X?'.

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 advises using this tool to replace multiple separate calls for a consolidated view, implying it should be used when a comprehensive snapshot is needed. While it does not list explicit when-not-to-use scenarios, the guidance is clear and contextually strong.

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

get_feed_briefingGet Feed BriefingA

Generate a compact headline briefing from pinned feeds for the morning dashboard. Returns one headline per tag, capped at 8 total. Designed to be included in get_session_start without slowing it down. Only fetches pinned feeds. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_headlinesNoMax headlines to return (default: 8)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the tool returns one headline per tag, caps at 8, and includes a 'render field with tiered rendering guidance'. This goes beyond basic purpose to explain output behavior. It doesn't mention read-only nature but is 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?

Four sentences, each adding unique value: core function, constraints, usage context, and response trait. No wasted words, front-loaded with purpose. Efficient and well-structured.

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 has one optional parameter and no output schema, the description explains the output (headlines, capped, one per tag, render field). It could benefit from listing exact response fields, but the mention of 'render field' provides enough guidance for an AI agent to compose a reply. Sibling context is handled.

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

Parameters4/5

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

Schema coverage is 100% with one optional parameter 'max_headlines'. The description adds meaning by stating 'capped at 8 total' and confirming the default, reinforcing the parameter's role in limiting output. It adds value beyond the schema's description.

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 ('Generate'), resource ('compact headline briefing from pinned feeds'), and constraints ('one headline per tag, capped at 8 total'). It distinguishes from siblings like 'get_feed_items' and 'get_session_start' by noting it is designed for the morning dashboard and only fetches pinned feeds.

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 says 'Designed to be included in get_session_start without slowing it down' and 'Only fetches pinned feeds', providing clear usage context. It implies when not to use (e.g., for non-pinned feeds or detailed feed reading), though it does not explicitly list alternative tools.

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

get_feed_itemsGet Feed ItemsA

Fetch the latest items from subscribed feeds. Returns a numbered summary list with title, author, date, and whether full content is available. Use read_feed_item with the item number to get full content. Filter by feed_id for a specific feed, or by tag for a topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter feeds by tag
limitNoMax items to return (default: 25)
feed_idNoUUID of a specific feed. Omit to fetch across all feeds.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses that a numbered summary list is returned, but doesn't discuss edge cases like empty results or performance.

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: first states purpose and output, second gives usage guidance. Front-loaded and no excess. 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 3 params, no output schema, and no annotations, the description covers purpose, output details, and param usage. Could mention pagination (limit default) or empty list handling, but fairly complete.

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

Parameters4/5

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

Schema covers all 3 params with descriptions. Description adds context: tag is for topic filtering, feed_id for specific feed, and implies default limit. Adds value beyond 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 fetches latest feed items, describes the return structure (numbered summary list with title, author, date, availability flag), and distinguishes from read_feed_item for full content.

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?

Explicitly tells when to use read_feed_item for full content. Explains filtering by feed_id or tag. No explicit when-not-to, but context is clear.

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

get_financial_accessGet Financial AccessA

Check a user's financial access level. Any user can check their own access. Owners can check any user by passing target_user_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_user_idNoThe user_id to check. Omit to check your own access level.

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so the description carries full burden. It discloses that it is a read operation and specifies permission roles, but does not describe the return value format or potential side effects, which is adequate but not thorough.

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

Conciseness5/5

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

Two short sentences with the purpose front-loaded. Every word earns its place, no 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?

The description is comprehensive for a simple one-parameter tool, covering usage and permissions. It lacks detail on output, but given no output schema, the omission is acceptable.

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% and the description restates the schema's explanation of the optional parameter. No additional meaning is added beyond what the schema provides, meeting the baseline.

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 it checks a user's financial access level, using a specific verb and resource. It implicitly distinguishes from sibling tools like set_financial_access and get_financial_summary by focusing on the check operation.

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?

Provides explicit guidance: any user can check own access, owners can check others by passing target_user_id. No alternatives or when-not-to-use mentioned, but the role-based conditions are helpful.

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

get_financial_summaryGet Financial SummaryB

Return a snapshot of the company's financial position: total assets across all accounts, plus year-to-date income and expenses. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
timezoneNoIANA timezone string (e.g. 'America/New_York'). When provided, the YTD start is computed in the user's local timezone rather than UTC. Affects ytdStart.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It mentions a render field with tiered guidance, which adds behavioral context. However, it does not disclose side effects, auth requirements, or rate limits. The description is adequate but not thorough.

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, and every sentence adds value. There is no fluff or repetition. It is an excellent example of concise documentation.

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

Completeness4/5

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

Given the simple one-parameter schema and no output schema, the description covers the main purpose and a key behavioral note about the render field. It could be more complete by explaining the render field's content or error scenarios, but it is largely sufficient.

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 for the single parameter 'timezone'. The tool description does not add any extra meaning beyond the schema, so it meets the baseline expectation but does not exceed it.

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 returns a financial snapshot (total assets, YTD income/expenses). It is specific and informative, but does not differentiate from sibling tools like get_pl_report or get_dashboard, which could also provide financial data.

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 or when not to use it. The description only explains what it does, not the context for its use.

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

get_last_checkpointGet Last CheckpointA

Retrieve the caller's most recent checkpoint to show it or resume from it. Call when the user asks to see or pick up their last checkpoint (e.g. 'what was my last checkpoint', 'show me where I left off', 'pick up from my last checkpoint'). Pass project ONLY when there is resolvable context (an active project, a #tag, or a project unambiguously named in the conversation); omit it to search across ALL projects - do not infer a project to fill the gap. author defaults to 'me' (created_by = you); pass 'anyone' only on explicit team wording. intent defaults to 'show' (return the checkpoint to display); pass intent='resume' to pick up the work - on resume into a genuinely ambiguous target the tool returns a conflict to disambiguate rather than guessing. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax ranked candidates to return (1-10). Defaults to 5.
authorNoWhose checkpoints to consider. 'me' (default) = your own (created_by = you). 'anyone' = the whole team's; use only on explicit team wording ('the team', 'org', 'me and Doug', a named teammate). 'we'/'us' said to you stay 'me'.
intentNo'show' (default) returns the checkpoint to display. 'resume' returns it to pick up work, but returns a disambiguation conflict when the target is ambiguous. Read the user's verb: 'show me'/'what is/was' = show; 'pick up'/'continue'/'resume'/'where do I start' = resume.
projectNoProject tag (e.g. 'founders-os'). Pass ONLY with resolvable context; omit for a global, cross-project search. Never infer a project to fill a gap.

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, so description fully discloses behavior: defaults, conflict handling on resume, render field in response. No contradictions.

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 paragraph with dense, valuable information. Slightly long but every sentence earns its place. Could be broken into bullets for readability.

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?

No output schema, but description mentions render field. Covers all necessary context: when to call, how to use each parameter, and response content. Complete for a retrieval tool.

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

Parameters5/5

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

Parameters have 100% schema coverage, but description adds significant value: explains default behavior, inference rules, and enumeration logic beyond schema descriptions.

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

Purpose5/5

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

The description clearly states the verb 'retrieve' and resource 'checkpoint', specifying it's the caller's most recent checkpoint. It provides usage examples like 'what was my last checkpoint', distinguishing it from other tools.

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

Usage Guidelines5/5

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

Explicit conditions for when to call, with example phrases. Detailed guidance on parameter usage: project only with resolvable context, author default, intent default, and disambiguation behavior.

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

get_playbookGet PlaybookA

Fetch a single playbook with its full ordered step list and connector requirements. Use before running to inspect what the playbook will do and which connectors it needs.

ParametersJSON Schema
NameRequiredDescriptionDefault
playbook_idYesPlaybook UUID or slug.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states it 'fetches' data, implying read-only, but does not explicitly declare no side effects, permissions, or other behavioral traits. For a simple read tool, this is adequate but not thorough.

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

Conciseness5/5

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

Two sentences with no wasted words. The first defines the purpose, the second provides a usage guideline. Front-loads critical 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 a simple tool with one parameter and no output schema, the description covers what the tool returns (step list and connector requirements). It could mention the return format or confirm it's a single object, but it is largely 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 coverage is 100% for the single parameter 'playbook_id'. The description does not add meaning beyond the schema, which already describes it as 'Playbook UUID or slug.'

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 'fetch', the resource 'a single playbook', and what it includes ('full ordered step list and connector requirements'). This distinguishes it from siblings like list_playbooks (which fetches multiple) and get_playbook_run (a run, not the definition).

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 says 'Use before running to inspect what the playbook will do and which connectors it needs.' This provides clear context for when to use the tool. It does not name specific alternatives, but the context implies run_playbook for execution.

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

get_playbook_runGet Playbook RunB

Fetch the execution log and status of a specific playbook run.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesPlaybook run UUID.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided; description only states it fetches log and status. Does not disclose read-only nature, authentication requirements, or any side effects. Minimal behavioral insight beyond the name.

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 10-word sentence, no redundancy, directly states purpose. Efficient and front-loaded.

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 get-by-ID tool with one parameter and no output schema, the description is adequate but vague about the return format. Could hint at fields like status or steps.

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 description 'Playbook run UUID.' The tool description adds no additional meaning beyond what the schema already provides, so 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 uses specific verb 'fetch' and resource 'execution log and status' for a playbook run. Clearly distinguishes from sibling tools like 'list_playbook_runs' (which lists runs) and 'get_playbook' (which fetches the playbook definition).

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 'list_playbook_runs'. No mention of prerequisites, context, or conditions that would help an agent decide.

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

get_pl_reportGet P&L ReportA

Return a profit & loss summary grouped by category for a given date range. Excludes transactions marked exclude_from_reports. Pass customer_id to scope the report to a single attributed customer, or group_by_customer: true to include a per-customer rollup alongside the category breakdown. Transactions with no customer attribution bucket as 'Unattributed' in the rollup. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateYesEnd date (YYYY-MM-DD, inclusive).
from_dateYesStart date (YYYY-MM-DD, inclusive).
customer_idNoOptional. Restrict the report to transactions attributed to this customer.
group_by_customerNoOptional. When true, include a `by_customer` rollup with per-customer income, expenses, and net. Transactions without a customer attribution bucket as 'Unattributed'.

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description discloses key behaviors: exclusions, parameter interactions, unattributed bucket, and render field. It does not mention permissions, rate limits, or data freshness, but for a read tool the disclosure is substantial.

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 four sentences with no filler. It front-loads the main purpose, then adds critical nuances. 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 no output schema, the description explains the key output aspects (category breakdown, optional by-customer rollup, render field). It could detail the return fields more, but the render field guidance compensates. Adequate for the complexity.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the interplay between customer_id and group_by_customer, and the unattributed bucket, which goes beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states the tool returns a profit & loss summary grouped by category for a date range. It uses specific verbs and resources, distinguishing it from generic list tools. Although a sibling 'get_financial_summary' exists, the description uniquely specifies grouping and report scope.

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 customer_id vs group_by_customer and mentions the exclusion of certain transactions. It does not explicitly list when not to use the tool or contrast with siblings like get_financial_summary, but the context for parameter usage is clear.

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

get_projectGet ProjectA

Get a full project card: project details, associated tag, and all tasks/customers carrying the project's tag. Tasks are grouped by status with recent items shown.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesProject UUID.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It describes the return structure well but does not explicitly state that the operation is read-only, nor does it cover authentication or rate limits. The grouping and recency detail is helpful.

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 one sentence, front-loaded with the primary action, and no redundant words. Every word adds value.

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 single parameter and no output schema, the description provides a detailed account of what is returned (project details, tag, tasks/customers with grouping). It is nearly complete, though it could mention any error conditions or limits.

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 single parameter 'project_id' has a brief description in the schema. The tool description adds no additional parameter semantics beyond the schema, which is already sufficient. Baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the tool retrieves a full project card including details, associated tag, and tasks/customers grouped by status. This distinguishes it from sibling tools like list_projects or get_project_history.

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. While the purpose is clear, there is no mention of when not to use it or which other tools might be more appropriate for simpler queries.

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

get_project_historyGet Project HistoryA

Chronological timeline of stored memories for a single project. Use to review how a project has progressed over time, to answer 'where did we leave off', or to assemble a project narrative. Defaults to checkpoint entries (kind='checkpoint'); pass kind='all' to include every memory for the project. Ordered newest-first. This is the chronological companion to memory_recall, which is semantic and ranked. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoFilter by memory kind stored in metadata.kind. Defaults to 'checkpoint'. Pass 'all' to return every memory for the project regardless of kind.
limitNoMax entries to return (1-50). Defaults to 20.
scopeNoWhich memories to include: 'org', 'personal', or 'both' (default).
authorNoWhose entries to include. 'me' (default) returns only entries you authored (created_by = you), so on a shared team project you resume your own thread rather than a teammate's. 'anyone' returns the whole team's entries for the project.
projectYesProject tag to load history for (e.g. 'founders-os', 'marching-maestro').
to_dateNoISO 8601 timestamp. Only entries created on or before this date.
from_dateNoISO 8601 timestamp. Only entries created on or after this date.

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, but description reveals behavioral traits: ordered newest-first, defaults to checkpoint entries, response includes a render field. It doesn't mention permissions or side effects, but as a read tool, the description is reasonably transparent.

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?

Concise yet comprehensive; every sentence adds essential information. Purpose is front-loaded, followed by usage, defaults, ordering, companion tool, and response guidance. No fluff or repetition.

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 no output schema, the description covers return format (render field), ordering, and default behavior. It distinguishes from a key sibling tool and provides enough context for correct invocation. Parameter documentation is complete via schema.

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

Parameters4/5

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

Schema coverage is 100%, but description adds value beyond schema by explaining the kind default and behavior, ordering, and the render field. This context helps the agent understand parameter implications without duplicating schema descriptions.

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

Purpose5/5

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

The description clearly states the tool returns a chronological timeline of stored memories for a single project, with specific use cases like reviewing progress and assembling narratives. It distinguishes itself from sibling tool memory_recall by highlighting the chronological vs semantic difference.

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

Usage Guidelines5/5

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

Explicitly states when to use ('review progress', 'answer where we left off') and contrasts with memory_recall ('chronological companion'). Provides defaults and options like kind='all'. Although it doesn't list all sibling tools, the guidance is sufficient for correct selection.

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

get_session_startGet Session StartA

Session orientation pointer. Returns today's date and a list of tools to call in parallel for a complete morning briefing. Does not fetch data itself - call the listed tools to get the actual content. Use this at the start of every session or when the user says 'start my day', 'catch me up', or similar. The response includes a rendering_contract field that defines the four-tier render ladder used across every founders-os tool for the rest of the session - read it before composing any founders-os output. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
timezoneNoIANA timezone string (e.g. 'America/New_York'). Passed through to the tools you call so dates are computed in the user's local timezone.
client_capabilitiesNoDeclare the highest rendering tier this client supports so the agent can skip the per-response ladder evaluation. Values mirror the four-tier ladder in the rendering_contract field. Omit to default to 'visual_primitive_tool' (a warning fires on the response when omitted). Reflects the plugin's intended target, not a runtime probe.
expected_contract_versionNoThe rendering contract version the caller expects (typically declared by the cowork plugin's CLAUDE.md). When provided, the server compares against its own RENDERING_CONTRACT_VERSION and emits a contract_version_warning on mismatch. Omit when calling without the cowork plugin; no comparison happens and no warning fires.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the tool returns a list of tools to call (not data itself), mentions the rendering_contract and render fields, and warns about default behavior if client_capabilities is omitted. However, it does not specify any side effects or potential limitations.

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 somewhat lengthy but every sentence adds value. It fronts the purpose and usage, then covers parameters and response fields. Could be slightly more concise, but overall well-structured.

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 no output schema, the description explains return fields (rendering_contract, render) and parameter details well. It provides enough context for an agent to use the tool correctly, though it could mention if there are any error conditions or rate limits.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value beyond schema by explaining that timezone is passed through to called tools, client_capabilities tiers mirror the rendering_contract ladder, and expected_contract_version is for version comparison. This enriches parameter understanding.

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 explicitly states it returns today's date and a list of tools to call in parallel for a morning briefing. It distinguishes itself from siblings by noting it does not fetch data itself, making the purpose clear and unique.

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

Usage Guidelines5/5

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

The description provides clear usage instructions: use at the start of every session or when the user says 'start my day', 'catch me up', or similar. It also tells the user to read specific response fields (rendering_contract, render) before composing output.

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

get_stuck_listGet Stuck ListA

Surface stuck, stale, and overdue tasks that need triage. Returns in_progress tasks untouched for N days, blocked tasks, and overdue tasks (todo or in_progress with past due date). Each row includes days_stale and a suggested triage action. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoFilter by scope. Omit for combined view.
timezoneNoIANA timezone (e.g. 'America/New_York'). Used for accurate 'today' calculation.
max_age_daysNoDays of inactivity that qualify as 'stale' for in_progress tasks. Defaults to 7.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the output includes days_stale, suggested triage action, and a render field with tiered rendering guidance. It does not mention auth or rate limits, but for a read-only tool this is acceptable.

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?

Three sentences front-load the purpose and key behavioral points. Every sentence adds value: what it returns, why use it, and a critical note about the render field. No unnecessary 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?

The description covers the output content and the render field, which is helpful for agent usage. With 3 well-described parameters and no output schema, it provides sufficient context for effective use, though some edge cases (e.g., empty results) are not addressed.

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 adds no new meaning beyond what the schema already provides (scope, timezone, max_age_days). The effect of max_age_days is implied but not explicitly tied to the parameter.

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

Purpose5/5

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

The description clearly states the tool surfaces stuck, stale, and overdue tasks needing triage, specifying the three categories (untouched, blocked, overdue). This differentiates it from sibling tools like get_task or list_tasks, which serve broader task retrieval purposes.

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 triaging tasks but does not explicitly state when to prefer this tool over alternatives or when not to use it. No guidance on prerequisites or exclusions, which is a gap given the number of sibling tools.

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

get_taskGet TaskA

Fetch a single task by ID, including all linked entities and notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesTask UUID.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description must disclose behaviors. It states the fetch includes linked entities and notes, but does not mention auth needs, rate limits, or any side effects. As a read operation, risks are low, but disclosure is minimal.

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 clearly states purpose and scope. No wasted words. Front-loaded with the verb 'Fetch'.

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, so description should explain return value. It mentions 'including all linked entities and notes' but lacks details on structure or fields. For a simple fetch, it is adequate but could be more 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 has 100% coverage with description 'Task UUID.' The tool description adds no additional meaning beyond what the schema provides. 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?

Description clearly states 'Fetch a single task by ID' which is a specific verb+resource. It adds scope with 'including all linked entities and notes'. Distinguishes from sibling tools like list_tasks (multiple tasks) and get_task_summary (summary).

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 vs alternatives such as list_tasks or get_task_summary. Does not mention when not to use or provide any usage context.

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

get_task_summaryGet Task SummaryA

Dashboard-style summary of the task queue: overdue, due today, upcoming, counts by status, by assignee, and a dedicated AI tasks section for tasks assigned to @-prefixed agents. Call at session start to orient on what needs attention. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoUpcoming window in days (7, 14, or 30). Defaults to 7.
scopeNoLimit summary to one scope. Omit for combined view.
timezoneNoIANA timezone string (e.g. 'America/New_York'). When provided, 'today' is computed in the user's local timezone rather than UTC, preventing off-by-one date errors for users in western-hemisphere timezones after ~7 pm UTC.

TDQS

A4/5.0
Behavior3/5

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

Discloses that response includes a 'render field with tiered rendering guidance', indicating non-trivial response structure. No explicit statement about side effects or read-only nature. Since no annotations are provided, the description could be more transparent about safety (e.g., read-only hint), but it is not misleading.

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?

Four sentences, each serving a distinct purpose: purpose definition, content listing, usage scenario, response handling. No filler or repetition. Front-loaded with key intent.

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 no output schema, the description adequately explains the summary content (sections) and the presence of a render field with usage guidance. Covers the tool's role as an orientation tool. Could mention data freshness or limitations, but is comprehensive enough for a summary tool.

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

Parameters3/5

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

Schema describes all 3 parameters with descriptions (100% coverage). The tool description does not add additional information about parameter meaning or usage beyond what the schema provides, so it meets the baseline without adding extra 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?

Description clearly states it returns a 'Dashboard-style summary of the task queue' with specific breakdowns (overdue, due today, upcoming, counts by status/assignee, AI tasks). Distinguishes from task listing tools like list_tasks by being a summary, and from get_task by covering multiple aspects. Explicitly mentions call at session start, reinforcing purpose.

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?

Provides explicit usage: 'Call at session start to orient on what needs attention.' Also instructs to check render field before composing reply. Does not mention when not to use or alternatives, but the clear recommendation suffices for typical scenarios.

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

get_usage_guideUsage GuideA

Returns a detailed guide on how to use Founders OS - covering all six domains (CRM, Tasks, Tags, Finance, Feeds, Memory), surface tools, search protocols, common workflows, and tips. Call this when uncertain about how to approach a task.

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?

No annotations are provided, so the description must carry the full burden. It states the tool returns a guide, but does not disclose any behavioral traits such as authentication requirements, rate limits, or side effects. Since it is a read-only operation returning a guide, the lack of detail is acceptable but could be improved.

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 long, front-loaded with the main action, and every sentence earns its place. It is concise and well-structured.

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 of the tool (no parameters, no annotations, no output schema), the description covers the purpose and usage context. However, it lacks specific details about the return format or structure, which would be helpful for completeness.

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

Parameters4/5

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

The input schema has zero parameters, and schema coverage is 100%. The description does not need to add parameter meaning, and the baseline for 0 parameters is 4. It provides no parameter info, but none is necessary.

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 returns a detailed guide on using Founders OS, covering all six domains, surface tools, search protocols, workflows, and tips. It uses a specific verb ('Returns') and resource ('guide on how to use Founders OS'), and it is easily distinguished from sibling tools which are specific actions or queries.

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 says 'Call this when uncertain about how to approach a task,' providing clear guidance on when to use the tool. However, it does not mention when not to use it or suggest alternatives, though no other guide tool exists among siblings.

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

get_versionGet VersionA

Returns the running version of @ourthinktank/founders-os, the rendering contract version (used to detect plugin/server drift), how the connector was launched (launchMethod: npx | global | local | unknown) with a tailored howToUpdate string, the release channel (channel: stable | prerelease), the published head of that channel, and the database schema status (dbSchemaStatus: current | behind | ahead | untracked | unknown) with a howToUpdateDb step when action is needed. Version comparison is semver-aware and channel-aware: stable builds compare against the latest tag, prerelease builds against the next tag, so a prerelease that is ahead of stable is NOT reported as an update. versionStatus is one of current | update-available | ahead | unknown; updateAvailable is true only when a genuinely newer version exists on your channel (with updateTo naming it). Call at session start; if updateAvailable is true relay current vs updateTo and the howToUpdate step, and if dbSchemaStatus is behind or untracked relay the howToUpdateDb step.

ParametersJSON Schema
NameRequiredDescriptionDefault
check_latestNoIf true, also query the registry for the latest version (default: true)

TDQS

A4/5.0
Behavior4/5

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

Discloses semver-aware comparison, channel awareness, registry query behavior, and all status fields. No annotations provided, so description carries full burden and does well. Minor omission: no mention of network dependency.

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?

Description is a single dense paragraph; could be improved with bullet points for readability. Contents are relevant and front-loaded with primary 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?

Tool has 0 required parameters and no output schema. Description covers all relevant output fields and logic. No gaps noted.

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 of the single parameter. The description echoes the schema without adding new detail. 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 'Returns the running version of @ourthinktank/founders-os' and lists all returned fields. Unique among siblings; no other version tool.

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

Usage Guidelines4/5

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

Explicitly advises 'Call at session start' and provides guidance on how to interpret results (relay update steps). No alternative tools exist, so no when-not needed.

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

get_weekly_retroGet Weekly RetroA

Completed-task retrospective for a given week. Groups done tasks by their first tag, includes completion notes as quotes, and optionally formats as a LinkedIn-ready draft. Useful for weekly reviews, standup prep, and public updates. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoFilter by scope. Omit for combined view.
formatNo'structured' (default) returns grouped data. 'linkedin' returns a ready-to-post draft.
timezoneNoIANA timezone (e.g. 'America/New_York'). When provided, the Monday-to-Sunday week boundary is computed in the caller's local calendar instead of the server's timezone. Matches the pattern in get_stuck_list / get_task_summary.
week_offsetNo0 = current week, 1 = last week, 2 = two weeks ago, etc. Defaults to 0.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavior: it groups tasks by first tag, includes completion notes as quotes, optionally formats as LinkedIn draft, and includes a render field with tiered rendering guidance. No destructive actions are implied, and the description clearly communicates output handling instructions.

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 three sentences long, front-loading core purpose and behavior in the first two sentences. Every sentence adds value: purpose, key features, usage scenarios, and a critical note about the render field. No fluff or redundancy.

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 has no required parameters and no output schema, the description adequately covers purpose, behavior, optional formatting, usage scenarios, and output guidance (render field). It is complete enough for an AI agent to understand what the tool does and how to use its response.

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 baseline is 3. The description adds global context (e.g., grouping behavior, LinkedIn option) but does not enhance per-parameter meaning beyond the schema's own descriptions. The schema already clearly defines each parameter, so the description provides minimal additional value for parameter understanding.

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 purpose: 'Completed-task retrospective for a given week.' It specifies the verb (get), resource (completed tasks for a week), and key behaviors (groups by first tag, includes notes, optional LinkedIn format). It distinguishes from siblings like get_task_summary and get_stuck_list by emphasizing the retrospective and weekly scope.

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

Usage Guidelines4/5

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

The description provides context for when to use the tool: 'Useful for weekly reviews, standup prep, and public updates.' However, it does not explicitly exclude alternatives or contrast with similar tools. The mention of checking the render field is a usage hint but lacks when-not-to-use guidance.

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

import_starter_feedsImport Starter FeedsA

Import a curated starter feed list covering tech, AI, business, news, crypto, engineering, and more. Skips any feeds you're already subscribed to. A subset of feeds are pinned by default for the morning briefing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses that already subscribed feeds are skipped and a subset are pinned for the morning briefing, but does not mention whether the operation is reversible, any permission needs, or side effects like rate limits.

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, 25 words, front-loaded with the main action. Every sentence adds value: first states purpose, second adds behavioral details (skipping, pinning). No 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 tool with no parameters and no output schema, the description covers the key aspects: what the tool does, what it skips, and what happens afterwards. It could mention that the list is predefined and not configurable, but overall it is sufficient.

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?

There are no parameters, and schema coverage is 100%. The description does not need to add parameter details, and the baseline for 0 parameters is 4. The description is consistent with 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 imports a curated starter feed list covering multiple topics, and distinguishes itself from sibling tools like subscribe_feed (individual subscriptions) and refresh_feeds (updating existing). The verb 'import' and resource 'starter feed list' are specific.

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 for initial setup (starter feed list) but lacks explicit guidance on when to use versus alternatives or when not to use. No mention of prerequisites or context like 'use when setting up a new account'.

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

list_accountsList AccountsA

List all capital accounts with their current balances.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoConvenience filter for a single tag. Use `tags` for multiple.
tagsNoFilter to items carrying these tags. Combined per `tag_match` (default 'all': the item must carry every listed tag).
tag_matchNoHow to combine `tags`: 'all' (item has every tag, default) or 'any' (item has at least one of them).
include_archivedNoInclude archived accounts. Default false.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are present, so the description must carry the behavioral burden. It implies a read-only operation but does not disclose whether archived accounts are included by default (handled by parameter), pagination, or idempotency. 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?

Single sentence that is front-loaded with the action and resource. No unnecessary words; every part adds value.

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 list tool with 4 parameters and no output schema, the description is adequate but lacks details on return format, pagination, or error handling. The mention of 'current balances' partially compensates for missing output schema.

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 adds no extra parameter meaning beyond what the schema already provides. The mention of 'current balances' is relevant to the tool's output but not to 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 states the verb 'list', the resource 'capital accounts', and includes 'current balances' for specificity. It distinguishes from sibling list_* tools by naming a unique resource.

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 like list_categories or list_transactions. The description does not mention any context or exclusion criteria.

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

list_bookmarksList BookmarksA

List saved feed item bookmarks, newest first. Returns title, summary, source feed, and link for each bookmark.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax bookmarks to return (default: 25)
offsetNoPagination offset

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses that results are sorted newest first and lists the returned fields (title, summary, source feed, link). With no annotations, these details help agents understand the tool's behavior. However, it does not mention pagination behavior beyond the schema parameters.

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

Conciseness5/5

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

Two short sentences, no fluff. The key behavior and return fields are front-loaded. Every word adds value.

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 no output schema, the description adequately specifies return fields. It covers sorting and resource type. Could optionally mention user scope (e.g., 'your bookmarks'), but not essential for a simple list tool.

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

Parameters4/5

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

Schema coverage is 100%, so the parameter descriptions are already provided. The description adds value by confirming the ordering context for pagination ('newest first'), which helps agents understand how offset works. No additional detail needed.

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

Purpose5/5

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

The description clearly identifies the action ('list'), the resource ('saved feed item bookmarks'), and the ordering ('newest first'). It distinguishes from sibling tools like bookmark_item (create) and remove_bookmark (delete).

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 the tool is used to view bookmarks but does not explicitly state when to use it over alternatives or when not to use it. No exclusions or context about prerequisites are provided.

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

list_categoriesList CategoriesC

List all financial categories, optionally filtered by type.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoConvenience filter for a single tag. Use `tags` for multiple.
tagsNoFilter to items carrying these tags. Combined per `tag_match` (default 'all': the item must carry every listed tag).
typeNoFilter by category type. Omit to return all.
tag_matchNoHow to combine `tags`: 'all' (item has every tag, default) or 'any' (item has at least one of them).
include_archivedNoInclude archived categories. Default false.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It only says 'list,' which is inherently safe, but it does not disclose any behavioral traits (e.g., performance, authorization, rate limits) that would help an agent assess consequences.

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 wasted words. It is appropriately concise, though it lacks depth.

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 no output schema and no annotations, the description is incomplete. It does not explain the return format, pagination, or what fields each category contains. For a listing tool, this information is crucial for proper invocation.

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% coverage with detailed descriptions for all 5 parameters. The tool description adds no additional parameter information 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 'List all financial categories' – a specific verb and resource. It also mentions optional filtering by type. However, it does not differentiate from sibling list tools (e.g., list_accounts, list_tags), which could cause ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There are many sibling list tools, and the description does not specify when list_categories is the appropriate choice or when to avoid it.

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

list_customersList CustomersA

List customers with optional filters. Returns paginated results with summary info. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoConvenience filter for a single tag. Use `tags` for multiple.
tagsNoFilter to items carrying these tags. Combined per `tag_match` (default 'all': the item must carry every listed tag).
limitNoMax results
stateNoFilter by 2-letter state code
offsetNoOffset for pagination
tag_matchNoHow to combine `tags`: 'all' (item has every tag, default) or 'any' (item has at least one of them).
customer_typeNoFilter by customer type
customer_phaseNoFilter by lifecycle phase
has_open_follow_upsNoIf true, only return customers with open tasks

TDQS

A4/5.0
Behavior4/5

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

No annotations provided, so description must cover behavior. It mentions paginated results, summary info, and a render field with tiered rendering guidance—helpful beyond a simple list. No contradictions.

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?

Three sentences: purpose, behavior (pagination/summary), and a notable rendering detail. No wasted words, 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?

No output schema, so description should explain returns. It conveys paginated results with summary info and a render field, sufficient for an agent. Could be more specific about summary fields but overall 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 baseline is 3. The description adds minimal parameter info beyond 'optional filters', relying on the schema to detail each parameter.

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

Purpose5/5

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

Clearly states 'List customers with optional filters', specifying verb and resource. Among many sibling list tools, this is distinctively about customers, aided by the tool name itself.

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 versus alternatives (e.g., search_customers, get_customer). The description implies it's for listing with filters, but no exclusions or alternative references.

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

list_deletedList Deleted ItemsA

List recently soft-deleted items (the recoverable trash) for the current company so the user can pick one to restore or permanently delete. Returns each item's type, a human-readable label, when it was deleted, and the date it will be auto-purged. Defaults to the last 7 days with leftover demo fixtures hidden; pass days to widen the window, entity_type to filter, or include_demo to show demo data. Each item carries entity_id for use with restore_item or purge_item - present items to the user by label, never by id. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLook-back window in days. Defaults to 7.
limitNoMax items to return. Defaults to 100.
entity_typeNoFilter to a single entity type. Omit for all types.
include_demoNoInclude leftover demo (demorun-) fixtures. Defaults to false.

TDQS

A4.7/5.0
Behavior4/5

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

Discloses that items are soft-deleted, recoverable trash, and lists returned fields. Explains defaults and filtering. Does not mention authentication or rate limits, but for a read-only list operation, the description provides sufficient behavioral context beyond the absent 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?

Every sentence serves a purpose: main action, return data, defaults, usage, further guidance (render field). No fluff, well-structured with front-loaded purpose and progressive detail.

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?

Fully covers all 4 parameters, explains return fields, ties to sibling tools (restore_item, purge_item), and mentions render field for rendering guidance. Adequate for a tool with no output schema and no 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?

Schema coverage is 100% with parameter descriptions. The description adds value by explaining defaults (days=7, include_demo=false), the effect of entity_type, and usage patterns (pass days to widen window). This enriches the agent's understanding beyond the schema alone.

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 lists recently soft-deleted items for the current company, specifying the purpose (user picks one to restore or permanently delete). It distinguishes from other list tools by targeting trash items and mentions what is returned (type, label, deletion time, auto-purge date).

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

Usage Guidelines5/5

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

Explicitly describes when to use (list trash for recovery/permanent deletion) and default behavior (7 days, demo hidden). Provides guidance on how to adjust (days, entity_type, include_demo) and presents proper usage of results (present by label, not id, check render field). Context from siblings shows this is the only list-deleted tool, with restore/purge as next steps.

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

list_demosList DemosA

Returns available interactive demo walkthroughs bundled with Founders OS. When called without a name, returns a summary list of available demos. When called with a demo name, returns the full script (with shared presentation rules prepended) so the AI agent can run it directly. Call this when a user asks about demos, wants to explore features, or is onboarding.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDemo name to load (e.g. 'conflict-resolution-walkthrough'). Omit to list all available demos.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description bears the full burden. It describes two modes and mentions prepending shared presentation rules when loading a demo. It does not disclose authorization or error handling, but the read-only nature and low risk mitigate this.

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 concise: three sentences that front-load the purpose, detail behaviors, and provide usage guidance. No superfluous content.

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 low complexity (one parameter, no output schema), the description fully covers what the tool does, the two modes, and the expected returns. It is complete for its scope.

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% and the schema already describes the single optional parameter 'name'. The description reinforces the behavior but adds minimal new semantic information 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 clearly defines the tool's purpose: returning interactive demo walkthroughs. It specifies two distinct behaviors (list all demos or load a specific demo) and distinguishes it from all sibling tools, none of which relate to demos.

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?

Explicitly states when to call the tool: 'when a user asks about demos, wants to explore features, or is onboarding.' No alternatives are mentioned, but no sibling tools exist for demos, so the guidance is sufficient.

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

list_entity_tasksList Entity TasksC

Get all tasks linked to a specific entity (customer, contact, transaction, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results. Defaults to 50.
statusNoFilter by status. Omit to return all non-done tasks.
entity_idYesUUID of the entity.
entity_typeYesEntity type: customer | contact | interaction | transaction | contract | memory

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It fails to mention default status filtering (non-done tasks), pagination via limit parameter, or result ordering. The behavior is under-disclosed.

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 with no fluff. However, it could front-load key information like default filtering, and is slightly too brief given the tool's complexity.

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

Completeness2/5

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

The tool has 4 parameters, no output schema, and no annotations. The description's single sentence does not explain filtering, limits, or response structure, leaving the agent without sufficient context for correct invocation.

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 every parameter is documented. The description adds no additional meaning beyond what the schema provides, meriting the baseline score of 3.

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 lists tasks linked to a specific entity, distinguishing it from general list_tasks and single get_task. However, it says 'all tasks' but the schema shows a default filter excluding 'done' tasks, causing minor inaccuracy.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus siblings like list_tasks or get_task. The description implies entity-specific task retrieval but lacks any 'when not to use' or alternative suggestions.

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

list_feedsList FeedsA

List all subscribed RSS feeds, optionally filtered by tag or pinned status. Returns feed metadata from the shared catalog along with per-user tags and pinned status.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter by tag (e.g. 'tech', 'news')
pinned_onlyNoOnly show pinned feeds. Default: false

TDQS

A3.5/5.0
Behavior2/5

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

Without annotations, the description carries full burden but only mentions return structure. It does not explicitly state that the operation is read-only, requires no special permissions, or has no side effects. The agent cannot fully assess safety or behavioral impact.

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 convey purpose, scope, and return value with no redundancy. Every piece of information is essential and front-loaded.

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 is present, so the description should thoroughly explain return structure. It mentions 'feed metadata' and 'per-user tags and pinned status' but omits specific fields, pagination, ordering, or size limits. This is minimally adequate for a simple list tool.

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

Parameters3/5

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

Schema coverage is 100%, and the description reiterates the filtering options (tag and pinned_only) without adding new constraints or format details. It meets baseline but does not enhance understanding 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 lists subscribed RSS feeds with optional filters, distinguishing it from siblings like list_accounts or list_bookmarks. The verb 'list' and specific resource 'RSS feeds' make purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for listing feeds with optional filters but does not explicitly state when to use this tool versus alternatives like get_feed_briefing or get_feed_items. No exclusions or context for when not to use are provided.

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

list_interactionsList InteractionsB

Get interaction history for a customer, with optional date range and type filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results
sinceNoDeprecated: use `from_date`.
untilNoDeprecated: use `to_date`.
to_dateNoOnly show interactions on or before this date (ISO 8601)
from_dateNoOnly show interactions on or after this date (ISO 8601)
customer_idYesCustomer UUID
interaction_typeNoFilter by interaction type

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It implies a safe read operation ('Get interaction history') and mentions optional filters, but lacks disclosure on pagination, ordering, or error behavior. Adequate but not thorough.

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 that front-loads the core purpose and key features. No redundant words; every part earns its place.

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 7 parameters, no output schema, and no annotations, the description is too brief. It does not explain return structure, pagination, ordering, or what happens with invalid inputs. Incomplete for an effective tool usage.

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 baseline is 3. The description summarizes that there are optional date range and type filters, which is already evident from the schema. It adds minimal new meaning beyond the individual parameter descriptions.

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 'Get' and the resource 'interaction history for a customer', and mentions optional filters. It distinguishes from sibling tools like log_interaction and remove_interaction by implying a read operation, but does not explicitly differentiate from other list tools.

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., list_demos or other list tools). No context for when not to use or prerequisites.

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

list_membersList MembersA

List all team members in this company with their owner status and financial access level. Any member can call this — you don't need to be an owner to see the roster.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It specifies the output (members with owner status and financial access level) and the access condition (any member), but lacks details on pagination or return format.

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 concise sentences with no wasted words. The key information is front-loaded.

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

Completeness5/5

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

For a zero-parameter tool without an output schema, the description provides all necessary context: what data is returned and who can access it.

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 the baseline is 4. The description adds value by explaining what the output contains, which compensates for the lack of 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?

The description clearly states the tool lists all team members with specific attributes (owner status, financial access level), distinguishing it from sibling tools like list_accounts or list_customers.

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

Usage Guidelines4/5

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

The description provides clear context that any member can call this tool, but does not explicitly state when not to use it or mention alternatives.

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

list_playbook_runsList Playbook RunsC

List playbook execution history. Optionally filter by playbook or customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results. Defaults to 25.
customer_idNoFilter to runs for a specific customer.
playbook_idNoFilter to runs of a specific playbook.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It only says 'List execution history' without details on behavior: no mention of read-only nature, ordering, pagination, or performance. The description is too vague to disclose important behavioral traits.

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 concise sentence with clear front-loading. No wasted words. Perfectly appropriate length for the information conveyed.

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 low complexity, the description omits crucial context: no mention of return format, ordering, or that this is a read operation. With no output schema, the description should be more informative. It is incomplete for tool selection.

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 merely restates that filtering is optional, adding no new meaning beyond the schema's per-parameter descriptions. Thus, it stays at baseline.

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 'List playbook execution history', which is a specific verb ('list') and resource ('playbook execution history'). It distinguishes from siblings like 'get_playbook_run' (single run) and 'list_playbooks' (playbooks), but does not explicitly name alternatives, so it misses the top score.

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 or not use this tool vs. alternatives like get_playbook_run. There is no mention of prerequisites or context. The phrase 'Optionally filter by playbook or customer' hints at use cases but does not provide explicit usage rules.

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

list_playbooksList PlaybooksA

List all defined playbooks for this company. Returns name, slug, description, and step count. Archived playbooks are hidden by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_archivedNoSet true to include archived playbooks. Defaults to false.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden for behavioral disclosure. It states that archived playbooks are hidden by default, which is a key behavior. It also lists the returned fields, giving some structure. However, it does not mention pagination, ordering, or any rate limits, leaving minor gaps for a list 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?

Two concise sentences clearly convey purpose and a key behavioral detail. Every word adds value; there is no redundancy or fluff.

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

Completeness4/5

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

For a simple list tool with one optional parameter and no output schema, the description is mostly complete. It explains what is returned and the default filtering. Minor omissions: does not mention if the list is paginated or if there is a limit, but for typical small-scale playbooks this is acceptable.

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%, and the parameter 'include_archived' is already well described in the schema. The description reinforces the default behavior but does not add new semantic information beyond what the schema provides, meeting the baseline.

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 ('List all defined playbooks') and the resource ('for this company'), and specifies the returned fields (name, slug, description, step count). This distinguishes it from sibling tools like get_playbook (single), create_playbook, or list_playbook_runs.

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 that this tool is for listing playbooks and mentions the archived filtering default. However, it does not explicitly contrast with alternatives like get_playbook (for a single playbook) or list_playbook_runs (for runs), nor does it provide guidance on 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.

list_projectsList ProjectsA

List registered projects. Defaults to active projects only. Returns task counts per project (queried by tag). Also flags any #-prefixed tags in the registry that don't have a corresponding project record.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by status. Omit to return active projects only.
include_allNoSet true to return projects in all statuses.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so the description carries the full burden. It discloses that the tool returns task counts per project and flags #-prefixed tags without corresponding project records, going beyond a simple list. No contradictions.

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, no fluff. Front-loaded with the core action, then concisely adds key details. Every sentence earns its place.

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

Completeness5/5

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

Despite no output schema, the description adequately covers return values (task counts, flagged tags) and default/optional filtering behavior. For a list tool with two params, this is complete and sufficient for an agent to understand usage.

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

Parameters4/5

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

Schema coverage is 100% but the description adds value by explaining the default for 'status' (active) and the effect of 'include_all' (return all statuses). This clarifies behavior beyond the schema's enum and boolean definitions.

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 'List registered projects' with specific verb and resource. It distinguishes itself by mentioning default 'active projects only' and additional return data (task counts, flagged tags), setting it apart from sibling tools like get_project or list_playbooks.

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 default behavior (active projects only) and the effect of optional parameters (status filter, include_all). It does not explicitly state when not to use this tool or name alternatives, but the context is clear enough for a listing tool.

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

list_tagsList TagsA

List all registered tags for the current company. Returns name, slug, color, and description for each tag. Use this to see what tags are available before tagging tasks or customers.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoFilter by scope. Omit to return all tags.
include_archivedNoSet true to include archived tags. Defaults to false.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It implies a read-only operation and lists return fields, but offers no additional behavioral details like rate limits or authentication needs.

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 concise sentences: one describing what the tool does and returns, the other providing usage guidance. No filler, 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?

For a simple list tool with two optional parameters and no output schema, the description covers purpose, return fields, and usage. It could mention filtering options, but schema covers those.

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 both parameters (scope, include_archived). The description adds no meaning beyond the schema, 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 lists all registered tags for the current company and specifies the returned fields (name, slug, color, description). This distinguishes it from sibling tools like create_tag or remove_tag.

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 advises using this tool to see available tags before tagging tasks or customers, providing a clear use case. However, it does not mention when not to use it or alternatives like preview_tags.

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

list_tasksList TasksA

List tasks with rich filtering. Omitting scope returns both org tasks and the caller's personal tasks. Filter by entity_type + entity_id to see tasks linked to a specific customer, transaction, etc. Use assigned_to='@claude' to surface the AI work queue. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoConvenience filter for a single tag. Use `tags` for multiple.
tagsNoFilter to items carrying these tags. Combined per `tag_match` (default 'all': the item must carry every listed tag).
limitNoMax results. Defaults to 50.
scopeNoFilter by scope. Omit to return both org and caller's personal tasks.
statusNoFilter by status.
priorityNoFilter by priority.
timezoneNoIANA timezone string (e.g. 'America/New_York'). When provided, 'today' is computed in the user's local timezone rather than UTC. Affects overdue_only filter.
due_afterNoReturn tasks due on or after this date (YYYY-MM-DD).
entity_idNoFilter to tasks linked to this entity ID. Requires entity_type.
tag_matchNoHow to combine `tags`: 'all' (item has every tag, default) or 'any' (item has at least one of them).
created_byNoFilter by creator user ID.
due_beforeNoReturn tasks due on or before this date (YYYY-MM-DD).
assigned_toNoFilter by assignee. Use a user ID, '@claude', '@gpt', or 'unassigned'.
entity_typeNoFilter to tasks linked to this entity type.
overdue_onlyNoIf true, only return tasks past their due date that are not done.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the response includes a render field with tiered guidance, but does not mention pagination, performance, or read-only nature (though implied). Adequate but could be richer.

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 concise with five sentences, each serving a purpose. It front-loads the core purpose and adds specific guidance without redundancy.

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

Completeness4/5

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

Given no output schema and 15 parameters, the description covers default behavior, important filters, and response features. It lacks details on ordering or full response structure, but is largely sufficient for a list tool.

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

Parameters4/5

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

Schema coverage is 100% with parameter descriptions. The description adds value by providing usage patterns (e.g., assigned_to='@claude') beyond the schema, helping the agent select parameters effectively.

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 'List tasks with rich filtering' and provides specific use cases (scope, entity_type+entity_id, assigned_to). However, it does not differentiate from the sibling tool 'list_entity_tasks', which may overlap in functionality.

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 gives explicit guidance for common scenarios (omitting scope, filtering by entity, using '@claude' for AI queue). It does not mention when NOT to use this tool or compare with alternatives, but the provided context is actionable.

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

list_transactionsList TransactionsB

List financial transactions with optional date range and account filters. Response includes a render field with tiered rendering guidance - check it before composing your reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoConvenience filter for a single tag. Use `tags` for multiple.
tagsNoFilter to items carrying these tags. Combined per `tag_match` (default 'all': the item must carry every listed tag).
limitNoMax results (default 100).
to_dateNoEnd date (YYYY-MM-DD, inclusive).
from_dateNoStart date (YYYY-MM-DD, inclusive).
tag_matchNoHow to combine `tags`: 'all' (item has every tag, default) or 'any' (item has at least one of them).
account_idNoFilter by account UUID.
category_idNoFilter by category UUID.
customer_idNoFilter by customer UUID.

TDQS

B3.3/5.0
Behavior3/5

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

No annotations exist, so the description carries full disclosure burden. It adds value by warning about the render field with tiered rendering guidance, but does not mention auth, rate limits, or other behavioral traits. This is modest but helpful transparency.

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

Conciseness5/5

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

Two sentences, both essential. First sentence conveys purpose and scope. Second sentence delivers a critical behavioral hint (render field). No unnecessary words, front-loaded with key info.

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 9 optional parameters, no output schema, and no annotations, the description is somewhat sparse. It covers purpose and one important response detail, but omits pagination, sorting, default behavior (e.g., what happens with no filters), and return structure beyond the render field mention. Adequate but not fully comprehensive.

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%, meaning each parameter already has a description. The tool description provides a high-level summary ('date range and account filters') but adds no new semantic details beyond the schema, so baseline 3 applies.

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 lists financial transactions with optional date range and account filters, which distinguishes it from other list_* siblings by specifying the resource type and common filter parameters.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., get_financial_summary or search_customers). The description implies usage via optional filters but does not provide when-to-use or when-not-to-use context.

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

log_interactionLog InteractionA

Record an interaction with a customer (email, call, meeting, demo, support ticket, event, or general note).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoFull details, notes, or transcript of the interaction
subjectNoBrief subject or title for this interaction
contact_idNoOptional: specific contact this interaction was with
customer_idYesCustomer UUID
interaction_dateNoWhen it happened (ISO 8601). Defaults to now if omitted.
interaction_typeYesType of interaction

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided. Description only says 'Record', implying creation but lacks details on side effects, idempotency, or permissions. For a creation tool, minimal transparency.

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

Conciseness5/5

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

Single sentence, concise, includes key details (types). No unnecessary 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?

Adequate for a simple creation tool with high schema coverage. Does not mention return value, but typical for such 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 covers all 6 parameters with descriptions (100% coverage). Description adds no extra parameter info, 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?

Clear verb 'Record' and resource 'interaction with a customer', lists types. Distinguishes from siblings like list_interactions and remove_interaction.

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?

Implicit that it's for logging interactions; sibling tools are distinct (list, remove). No explicit exclusions but context is clear.

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

memory_forgetMemory ForgetA

Delete a specific memory entry by its ID. For org-scoped memories, a conflict response is returned with a preview so the user can confirm. Pass confirm=true to skip the preview on retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoDeprecated: use `resolution: "confirm"`. Set true to delete immediately.
memory_idYesThe UUID of the memory to delete.
resolutionNoConflict resolution: 'confirm' deletes, 'cancel' aborts.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. It discloses conflict behavior and the confirm parameter's role in skipping preview. However, it does not discuss authentication, rate limits, or success/failure outcomes beyond conflict.

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 concise sentences, front-loaded with the primary action. No unnecessary words.

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 no output schema, the description adequately covers the conflict scenario but does not explain the return value or error cases. For a delete tool with three params, it is somewhat complete, but missing details on what a successful deletion returns.

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

Parameters4/5

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

Schema coverage is 100%. The description adds context to the confirm and resolution parameters by explaining their role in conflict resolution for org-scoped memories, which goes beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states the tool 'Delete a specific memory entry by its ID.' It includes handling for org-scoped memories with conflict resolution, which distinguishes it from related tools like memory_recall, memory_store, etc.

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 lacks explicit guidance on when to use this tool vs alternatives. It only mentions conflict resolution for org-scoped memories but does not specify when not to use or provide alternative tool suggestions.

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

memory_recallMemory RecallA

Semantically search stored memories and return the most relevant results. Call at the start of any project session to load prior context.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 10).
queryYesNatural language description of what to recall.
scopeNoScope to search: 'personal' for your own memories, 'org' for shared team memories, 'both' (or omit) for all accessible memories.
offsetNoNumber of results to skip for pagination (default 0). Use with limit to page through results: page 1 = offset 0, page 2 = offset 10, etc.
projectNoOptional project filter.
to_dateNoISO 8601 timestamp. Only return memories created on or before this date (e.g. '2026-05-01T00:00:00Z').
from_dateNoISO 8601 timestamp. Only return memories created on or after this date (e.g. '2026-04-01T00:00:00Z').
min_scoreNoMinimum similarity score (0-1) to include in results (default 0.35). Increase to filter noise, decrease to cast a wider net.
source_toolNoFilter by originating tool (e.g. 'complete_task', 'memory_summarize_and_store', 'cowork'). Only memories created by this tool are returned.
created_afterNoDeprecated: use `from_date`.
created_beforeNoDeprecated: use `to_date`.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It indicates semantic search and retrieval, but does not mention side effects, destructive actions, authentication, or rate limits. The description is adequate but lacks explicit safety guarantees.

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 extremely concise with only two sentences: the first states the purpose, the second provides a usage tip. Every sentence earns its place with no wasted words.

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 complexity (11 parameters, no output schema), the description is not fully comprehensive. It omits details about return values and does not summarize filtering options, though the schema covers them. It is complete enough for basic use but could benefit from more 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%, so the schema already documents all parameters well. The description does not add further meaning beyond the schema, resulting in a baseline score of 3.

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 performs semantic search on memories and returns relevant results. It distinguishes itself from sibling memory tools (memory_forget, memory_store, etc.) by focusing on recall and retrieval.

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 advises calling this tool at the start of any project session to load prior context. This provides clear usage guidance, though it does not specify when to avoid using it or mention alternatives.

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

memory_storeMemory StoreB

Store a specific memory entry. Use scope='org' for team-wide visibility, 'personal' for caller only. Call this whenever you learn something worth remembering across sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOptional classifier stored in metadata.kind (e.g. 'checkpoint', 'decision', 'fact'). Used by get_project_history to build a typed timeline.
forceNoDeprecated: use `resolution: "confirm"`. Set true to skip near-duplicate detection.
scopeYes'org' for team-wide visibility, 'personal' for caller only.
contentYesThe information to remember (max 20,000 characters).
projectNoOptional project tag (e.g. 'founders-os', 'client-acme').
resolutionNoConflict resolution after a near-duplicate is found: 'confirm' stores anyway, 'cancel' skips.
handoff_docNoOptional path to a session handoff doc, stored in metadata.handoff_doc (e.g. 'handoffs/<project>-session-handoff-YYYY-MM-DD-NN.md'). Pass it with a checkpoint so get_last_checkpoint returns the pointer without parsing it out of the body.
source_toolNoOptional label for the originating tool or surface.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only states 'Store a specific memory entry' and mentions scope. It does not disclose important behaviors such as near-duplicate detection, conflict resolution (despite the schema having 'force' and 'resolution' fields), or any side effects. This leaves the agent unaware of key behaviors.

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 extremely concise: two sentences with no wasted words. The most important information (verb and resource) is front-loaded. Every sentence serves a purpose: specifying the action and providing key usage guidance.

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 8 parameters, no output schema, and no annotations, the description is far from complete. It only addresses two aspects (purpose and scope) while ignoring other critical parameters like 'kind', 'project', 'force', 'resolution', and 'handoff_doc'. The tool's complexity demands a more thorough description to ensure correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by providing usage context for the 'scope' parameter (team vs. personal visibility), which is also described in the schema but with slightly different wording. However, it does not add meaning for the other six parameters, which remain fully explained only in the schema. Thus, the description offers marginal additional value.

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: 'Store a specific memory entry.' It specifies the verb and resource. Although it does not explicitly differentiate from sibling memory tools (e.g., memory_recall, memory_update), the phrase 'store' and 'learn something worth remembering' implicitly indicate it is for new entries, not retrieval or modification.

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

Usage Guidelines3/5

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

The description provides some usage guidance: 'Use scope="org" for team-wide visibility, "personal" for caller only' and 'Call this whenever you learn something worth remembering across sessions.' However, it lacks explicit when-not-to-use or alternatives, such as when to use memory_update instead for overwriting an existing memory.

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

memory_summarize_and_storeMemory Summarize & StoreB

Distill a session summary into a memory entry and store it. Pass a full narrative description of what happened — the more detail the better. Call at the end of meaningful sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoOptional classifier stored in metadata.kind. Pass 'checkpoint' for end-of-session checkpoints so get_project_history can build the project timeline.
forceNoDeprecated: use `resolution: "confirm"`. Set true to skip near-duplicate detection.
scopeYes'org' to share with the whole team, 'personal' for private notes.
projectNoOptional project tag.
resolutionNoConflict resolution after a near-duplicate is found: 'confirm' stores anyway, 'cancel' skips.
handoff_docNoPath to the session handoff doc, stored in metadata.handoff_doc. When storing a checkpoint, pass the final reconciled handoff path (e.g. 'handoffs/<project>-session-handoff-YYYY-MM-DD-NN.md') so get_last_checkpoint returns it without parsing the body.
session_summaryYesA narrative description of the session to memorize. Include decisions made, context established, and anything useful for future sessions (max 20,000 characters).

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose all behavioral traits. It mentions storing a memory but does not explain critical behaviors like near-duplicate detection (evident from 'force' and 'resolution' parameters), the 20,000 character limit, or any side effects. The description is insufficiently transparent for safe agent invocation.

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 very concise with only two sentences. It is front-loaded with the core action and usage hint. While it could include more guidance, it avoids unnecessary verbosity. Every word earns its place.

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 complexity (7 parameters, multiple sibling memory tools, no output schema), the description is incomplete. It does not explain how this tool differs from 'memory_store', 'checkpoint', or 'get_project_history'. The schema reveals important details like conflict resolution and handoff_doc, but the description ignores them, leaving the agent underinformed.

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 only needs to add value beyond the schema. It reinforces that 'session_summary' should be a narrative description, but does not elaborate on other parameters like 'kind', 'scope', or 'resolution'. The schema descriptions are already clear, so the description provides no additional semantic value.

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: to distill a session summary into a memory entry and store it. The verb 'distill' and the context 'at the end of meaningful sessions' provide a specific use case. However, it does not explicitly distinguish this tool from sibling tools like 'memory_store' or 'checkpoint', which slightly reduces clarity.

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 advises calling it 'at the end of meaningful sessions', which gives a clear usage context. However, it does not mention when not to use it, nor does it suggest alternatives such as 'memory_store' for smaller updates or 'checkpoint' for checkpoints. This is a minimal but acceptable guideline.

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

memory_updateMemory UpdateA

Update an existing memory's content in place. Re-embeds the new content for accurate future recall. For org-scoped memories, returns a conflict preview showing the before/after change for user confirmation. Pass confirm=true to apply after reviewing.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoDeprecated: use `resolution: "confirm"`. Set true to apply the update.
contentYesThe new content to replace the existing memory with (max 20,000 characters).
projectNoOptional: update the project tag. Omit to keep the existing tag.
memory_idYesThe UUID of the memory to update.
resolutionNoConflict resolution: 'confirm' applies the update, 'cancel' aborts.
change_reasonNoWhy this memory is changing - the cause you investigated (e.g. 'the project was renamed', 'the old value was superseded'). For org-scoped memories this is recorded in the audit log, preserving why it changed, not just the new value.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description informs about re-embedding (write operation), conflict preview for org-scoped memories, and need for confirmation. It does not detail error handling or response format, but covers key behavioral aspects.

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, front-loaded with the core action, no wasted words. Efficiently communicates the main purpose and key nuance for org-scoped memories.

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 6 parameters (2 required) and no output schema, the description covers the update flow, re-embedding, conflict preview, and confirmation. It lacks details on success response or error cases, but is sufficient for a straightforward update tool.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds value beyond schema by explaining the deprecated confirm parameter, resolution enum, and change_reason purpose (audit log). However, not all parameters receive additional context (e.g., project is just restated).

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 'update' and resource 'existing memory', and distinguishes from sibling tools like memory_store (store new) or memory_forget (delete) by specifying 'update in place' and 're-embeds the new content'.

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?

Provides context for org-scoped memories and the need for confirmation, but does not explicitly state when to use this tool versus alternatives (e.g., memory_store for new memories). No explicit exclusions or alternative tool names are given.

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

pin_feedPin FeedA

Pin a feed so it appears in the morning briefing. Pinned feeds are fetched during session start to generate headline summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
feed_idYesUUID of the feed to pin/unpin

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must convey all behavioral traits. It explains that pinned feeds are fetched at session start for summaries, which adds context. However, it does not discuss side effects, permissions, or reversibility (though implied by unpin_feed sibling).

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 are front-loaded with the action and purpose, no redundant words. Efficient for a simple tool.

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 (one parameter, no output schema), the description fully covers the behavior and effect. No missing information for an agent to select and invoke it correctly.

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 single parameter feed_id, stating 'UUID of the feed to pin/unpin'. The tool description itself does not add additional semantics beyond the schema; the 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 action ('Pin a feed') and the specific purpose ('appears in the morning briefing, pinned feeds fetched during session start for headline summaries'). This distinguishes it from sibling tools like unpin_feed or subscribe_feed.

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 when to use (to include feed in briefing) but does not explicitly state when to avoid or mention alternatives. The sibling list includes unpin_feed and other feed actions, but no direct comparison is made.

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

pingPingC

Test tool — returns pong. Update available: running v0.14.0, latest v1.8.0. Restart with @latest to update.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNoOptional message to echo back

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing side effects and behavior, but it only says 'returns pong.' The version/update note about 'Restart with @latest to update' is unrelated to the tool's runtime behavior and could mislead an agent into thinking updating or restarting is part of the tool's function.

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

Conciseness2/5

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

The first sentence is concise and front-loaded, but the second sentence about version numbers and '@latest' is irrelevant to the tool's function. Every sentence should earn its place, and this one does not.

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 test tool with one optional parameter and no output schema, 'returns pong' is minimally sufficient to make an initial call. However, the description does not clarify how the optional message affects the response, and the update notice adds confusion rather than 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?

The input schema fully documents the single optional message parameter with 100% coverage, including that it is echoed back. The description adds no parameter detail, but the schema already carries the burden, 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.

Purpose4/5

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

The description clearly identifies the tool as a test tool and states its behavior: 'returns pong.' This makes the purpose concrete and distinguishes it from the long list of non-test sibling tools, though 'test tool' is somewhat generic.

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 about when to use this tool versus alternatives such as get_version or show_capabilities. The word 'Test tool' implies a connectivity smoke test, but that is left to inference rather than stated.

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

preview_tagsPreview TagsA

Validate tag names and return the same warnings tagging would produce (bare contact name, customer/org match, missing ! or # prefix, typo) WITHOUT registering anything. Read-only - nothing is persisted. Call when you want to show how a tag name would be classified before committing it. Returns { warnings, auto_registered: [] }; auto_registered is always empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsYesTag names to check, e.g. ['Alex', 'needs-review'].

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description fully carries the burden: it declares read-only behavior, no persistence, and that auto_registered is always empty. It adds behavioral context beyond the schema, though it could detail the exact classification logic more thoroughly.

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, no wasted words. Key information is front-loaded: purpose, behavior, return structure. Every sentence adds value.

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 no output schema, the description explicitly states return format ({ warnings, auto_registered: [] }) and explains the reason for auto_registered being empty. The single parameter is well-documented, and the tool's simplicity means no further details are needed.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description enhances meaning by listing examples of warnings (bare contact name, customer/org match, typo) and providing example values, going beyond the schema's generic 'Tag names to check'.

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

Purpose5/5

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

The description uses specific verb 'validate' and resource 'tag names', clearly stating it returns warnings without registering anything. It distinguishes from siblings like create_tag by emphasizing no persistence.

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?

Explicitly states 'Call when you want to show how a tag name would be classified before committing it,' providing a clear use case. Could be improved by directly naming sibling tools for when to use alternatives, but current wording is sufficient.

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

purge_itemPermanently Delete ItemA

Permanently and irreversibly delete a soft-deleted item (purge it from the trash, skipping the 30-day recovery window). Only operates on items that are already soft-deleted - it refuses items that are still active. On the first call it returns a confirmation conflict; pass resolution: "confirm" only after the user explicitly agrees, or "cancel" to abort. Cascades to child rows the database cascades (e.g. a customer's contacts and interactions). To recover an item instead of destroying it, use restore_item.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesUUID of the soft-deleted entity.
resolutionNoPass "confirm" to permanently delete after the user agrees; "cancel" to abort. Omit on the first call to receive a confirmation prompt.
entity_typeYesType of soft-deleted entity to purge.

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It discloses irreversibility, the confirmation conflict, cascading to child rows, and the condition that it only works on soft-deleted items. This is comprehensive for a destructive operation.

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 concise enough, with each sentence serving a purpose. It is front-loaded with the core action. Slightly verbose due to detailed explanation of confirmation flow, but acceptable.

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 destructive nature and lack of output schema, the description covers all necessary context: prerequisites, confirmation flow, cascading behavior, and alternatives. It is complete for the agent to use correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the confirmation flow and the behavior of resolution parameter. It does not add new semantics to entity_type or entity_id beyond the schema, but the context of the confirmation mechanism is helpful.

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 purpose: permanently delete a soft-deleted item, skipping the 30-day recovery window. It uses specific verbs ('purge', 'delete') and identifies the resource ('soft-deleted item'). It distinguishes from the sibling tool 'restore_item'.

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

Usage Guidelines5/5

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

The description gives explicit guidance on when to use: only on already soft-deleted items. It says 'it refuses items that are still active'. It explains the confirmation conflict on first call and how to resolve. It also points to restore_item for recovery.

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

purge_itemsBatch Permanently Delete ItemsA

Permanently and irreversibly delete many soft-deleted items at once (batch purge from the trash). Provide either an explicit items list (entity_type + entity_id pairs, e.g. gathered from list_deleted) OR filters: entity_type, older_than_days, only_demo (leftover demo/test fixtures), or all. On the first call it returns a confirmation conflict summarizing how many items of each type will be destroyed; pass resolution: "confirm" only after the user explicitly agrees. Only ever touches already-soft-deleted items; cascades to child rows the database cascades. Use restore_items to recover instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoFilter: every recoverable item in the trash. Use with care.
daysNoFilter look-back window in days. Defaults to 30.
itemsNoExplicit items to purge. Provide this OR filters.
only_demoNoFilter: only leftover demo / test fixtures.
resolutionNoPass "confirm" after the user agrees, "cancel" to abort. Omit on the first call to get a confirmation prompt.
entity_typeNoFilter: only this entity type.
older_than_daysNoFilter: only items deleted more than N days ago.

TDQS

A4.8/5.0
Behavior5/5

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

Discloses critical behavioral traits: deletion is irreversible, only touches already-soft-deleted items, cascades to child rows, and returns a confirmation summary. No annotations exist, so description fully covers safety and side effects.

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 well-structured paragraph with clear sentences. It is concise yet comprehensive, covering all necessary information without redundancy.

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 7 parameters and no output schema, the description is complete: it covers the purpose, filtering options, confirmation workflow, safety constraints, and alternative tools. No gaps are evident.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds significant value by explaining the purpose of each filter (e.g., older_than_days) and the two-phase confirmation process for the resolution parameter. It clarifies that items list or filters must be provided but not both.

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

Purpose5/5

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

The description clearly states the tool's function: 'Permanently and irreversibly delete many soft-deleted items at once (batch purge from the trash).' It distinguishes from the singular 'purge_item' and references 'restore_items' as an alternative for recovery.

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

Usage Guidelines5/5

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

Explicitly describes when to use the tool (for batch deletion of already soft-deleted items) and when not to (use restore_items for recovery). Provides detailed workflow: first call returns a confirmation conflict, then user must explicitly agree before passing 'confirm' as resolution.

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

read_feed_itemRead Feed ItemA

Read the full content of a feed item by its index number (from get_feed_items). If the feed provides full article content, it is returned as HTML. If only a summary is available, the link to the original article is returned instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
feed_urlYesURL of the feed containing the item
item_indexYes1-based item number from the get_feed_items list

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the two possible behaviors: returning HTML for full content or a link for summaries. However, it does not mention potential errors or authorization requirements.

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, 24 words, front-loaded with purpose. Every sentence is essential and 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?

Given no output schema, the description adequately explains the two return types (HTML or link). It is sufficient for a simple read tool, though it omits error scenarios and authentication 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 coverage is 100%, so baseline is 3. The description adds minimal value by repeating the source of the item_index ('from get_feed_items'), which is already in the schema description. No additional syntax or usage hints.

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 'read' and resource 'feed item', and distinguishes it from siblings like get_feed_items by specifying it retrieves full content or a link. It also clarifies the input source (index from get_feed_items).

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 after get_feed_items but does not explicitly state when not to use the tool or mention alternatives. No guidance on prerequisites like subscription status.

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

refresh_feedsRefresh FeedsA

Force-refresh feed data by clearing the cache. Optionally refresh a specific feed and update its catalog metadata. If no feed_id is given, clears the entire cache.

ParametersJSON Schema
NameRequiredDescriptionDefault
feed_idNoRefresh a specific feed, or all if omitted

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It mentions clearing cache and updating catalog metadata, which indicates mutation and potential data loss. However, it does not disclose auth requirements, side effects (e.g., delays), or irreversible consequences.

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, front-loaded with the main action, no fluff. Each sentence adds necessary detail.

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 tool with one optional param and no output schema, the description covers the action and optionality adequately. Could mention return value or confirmation, but not strictly required.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds value by explaining that refresh updates catalog metadata, which is not in the schema description.

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 'refresh', the resource 'feed data/cache', and the scope (specific feed or all). It distinguishes from siblings like list_feeds or get_feed_items 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 Guidelines4/5

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

Provides clear context for when to use (force-refresh stale data) and the effect based on feed_id presence. No explicit exclusion or alternative mention, but it's implied by siblings.

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

remove_accountRemove AccountA

Remove a financial account by archiving (hides from active views, recoverable) or permanently deleting. On first call, returns a conflict with ARCHIVE / DELETE / CANCEL. Accounts with active (non-deleted) transactions cannot be deleted - the delete option becomes available once the account has no live transactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDeprecated: use `resolution`. 'archive' / 'delete' / 'cancel'.
account_idYesAccount UUID to remove.
resolutionNoResolution after the removal conflict: 'confirm' deletes (recoverable for 30 days), 'archive' hides it (recoverable), 'cancel' aborts.

TDQS

A4.2/5.0
Behavior4/5

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

Discloses that first call returns a conflict with options, that deletion is permanent but recoverable for 30 days, and that active transactions block deletion. Without annotations, this provides good behavioral context, though the two-call sequence could be more explicit.

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, front-loaded with the action and key behavior, no unnecessary words. Efficient and clear.

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?

Covers the main workflow and conditions. Lacks details on the exact output after successful operation and the format of the conflict response, but is fairly complete given no output schema.

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 100% of parameters with descriptions. The tool description does not add extra meaning to parameters beyond what the schema provides, so score at baseline 3.

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 tool removes a financial account, specifies two removal modes (archive/delete), and mentions the conflict response. This distinguishes it from sibling remove_* tools by focusing on financial accounts and the unique two-phase process.

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?

Explains the conflict-driven flow and condition for deletion (no active transactions), guiding when to use archive vs delete. Does not explicitly mention when not to use, but context from siblings clarifies it's for financial accounts only.

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

remove_bookmarkRemove BookmarkA

Remove a saved bookmark by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookmark_idYesUUID of the bookmark to remove

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must carry the burden of disclosing behavioral traits. It does not mention side effects, permissions, or reversibility, only stating the deletion action.

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 of 8 words, with 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?

Given the simplicity (one param, no output schema, no annotations), the description is adequate but could benefit from mentioning the return type or success indication.

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 single parameter, so the description adds no extra meaning. 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 'Remove', the resource 'saved bookmark', and the method 'by its ID'. It distinguishes itself from sibling tools like 'bookmark_item' and 'list_bookmarks'.

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 you have a bookmark ID, but provides no explicit guidance on when to use this tool versus alternatives or any prerequisites.

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

remove_categoryRemove CategoryA

Remove a financial category by archiving (hides from active views, recoverable) or permanently deleting. On first call, returns a conflict with ARCHIVE / DELETE / CANCEL. Categories with active (non-deleted) transactions cannot be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDeprecated: use `resolution`. 'archive' / 'delete' / 'cancel'.
resolutionNoResolution after the removal conflict: 'confirm' deletes (recoverable for 30 days), 'archive' hides it (recoverable), 'cancel' aborts.
category_idYesCategory UUID to remove.

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. However, it contains an internal contradiction: first sentence says 'permanently deleting' but resolution description in schema says 'confirm deletes (recoverable for 30 days)'. This inconsistency misleads about deletion finality.

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 succinct sentences that front-load the core purpose and key behaviors. Every word is informative, with no fluff.

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 no annotations or output schema, the description covers the main workflow and constraints. However, the contradiction between 'permanently deleting' and 'recoverable for 30 days' creates a completeness gap, and the exact format of the conflict response is not fully specified.

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 100% schema coverage, the description adds value beyond the schema by explaining conflict handling and deprecation of 'mode'. This aids understanding of how to use the parameters correctly.

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 removes a financial category with two modes (archive or permanently delete) and mentions conflict handling. It distinguishes itself from sibling tools like add_category or remove_account by specifying the resource and operation.

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 the two-step process (first call returns conflict) and a constraint (categories with active transactions cannot be deleted). It lacks explicit comparison to alternatives but provides enough context for correct invocation.

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

remove_contactRemove ContactA

Remove a contact by archiving (marks as inactive, recoverable) or permanently deleting. On first call, returns a conflict with ARCHIVE / DELETE / CANCEL options. Pass mode after the user decides. Interaction history referencing this contact is preserved on archive.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDeprecated: use `resolution`. 'archive' / 'delete' / 'cancel'.
contact_idYesContact UUID to remove.
resolutionNoResolution after the removal conflict: 'confirm' deletes (recoverable for 30 days), 'archive' hides it (recoverable), 'cancel' aborts.

TDQS

A3.6/5.0
Behavior2/5

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

The description claims 'permanently deleting' but the input schema for the 'resolution' parameter states that 'confirm' deletes are recoverable for 30 days, creating a contradiction. No annotations exist to clarify. The description also omits authorization requirements or side effects beyond interaction preservation.

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 concise with two main sentences, front-loading the purpose. It efficiently conveys key behavioral details, though the structure could be clearer about the two-step flow.

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 main action, two-step flow, and interaction preservation, but lacks details on the recoverability period for deletion, the return value after resolution, and potential impacts on linked data. For a simple tool with 3 parameters and no output schema, this is adequate but not comprehensive.

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

Parameters4/5

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

Schema coverage is 100%, providing baseline 3. The description adds value by explaining the multi-call pattern (first call returns conflict, then pass mode) and clarifying that archive preserves history, which guides parameter usage beyond the enum descriptions 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 removes a contact via archiving (recoverable) or deletion, with specific details on the two-step conflict flow and preservation of interaction history on archive. This distinguishes it from sibling tools like remove_account or update_contact.

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 the two-step process (first call returns conflict, then pass mode) and notes that interaction history is preserved on archive, implying when to use archive vs delete. However, it does not explicitly state when to use this tool over alternatives or provide exclusions.

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

remove_customerRemove CustomerA

Remove a customer by archiving (sets phase to inactive, recoverable) or permanently deleting. On first call, returns a conflict with ARCHIVE / DELETE / CANCEL options. Pass mode after the user decides. Contacts cascade on delete; history is preserved on archive.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDeprecated: use `resolution`. 'archive' / 'delete' / 'cancel'.
resolutionNoResolution after the removal conflict: 'confirm' deletes (recoverable for 30 days), 'archive' hides it (recoverable), 'cancel' aborts.
customer_idYesCustomer UUID to remove.

TDQS

A4.3/5.0
Behavior5/5

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

Without annotations, the description fully carries the burden of behavioral disclosure. It explains archiving vs deletion, recoverability, contacts cascade on delete, and history preservation on archive. It also discloses the two-phase process with a conflict response. This is thorough and transparent beyond what annotations would provide.

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 three sentences, front-loaded with the core purpose, and each sentence adds value. There is no redundancy or fluff. The structure efficiently conveys the removal process and behavioral traits.

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 absence of an output schema, the description should cover more about return values or error handling. It mentions 'returns a conflict' but does not describe the conflict object structure or any error cases. It also lacks information on permissions or prerequisites. While it covers main behavioral traits, it is not fully comprehensive for a tool with no schema output.

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 adds context about the two-step process but does not explicitly link parameters to that process. The schema descriptions for mode and resolution are already clear. The description does not significantly enhance parameter understanding 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 removes a customer, specifying two methods: archiving (recoverable) or permanent deletion. It also mentions the two-phase commitment process, distinguishing it from other remove_* tools in the sibling list. The verb 'remove' plus resource 'customer' is specific and informative.

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

Usage Guidelines4/5

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

The description provides clear guidance on the two-step usage: first call returns a conflict with options, then the user passes the mode. It implies when to use this tool (when removing a customer). However, it does not explicitly state when not to use it or mention alternatives like update_customer for editing rather than removal. No prerequisites or permission requirements are mentioned.

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

remove_interactionRemove InteractionA

Soft-delete a logged interaction (email, call, meeting, etc.) by its UUID. Interactions are append-only touchpoint history, so there is no archive state - removal is a soft-delete, recoverable for 30 days, then purged. On first call returns a conflict with DELETE / CANCEL options; pass mode after the user decides.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDeprecated: use `resolution`. 'delete' / 'cancel'.
resolutionNoResolution: 'confirm' soft-deletes (recoverable 30 days), 'cancel' aborts.
interaction_idYesInteraction UUID to remove.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully discloses soft-delete nature, 30-day recovery, and two-step conflict resolution. No contradictions.

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 concise sentences conveying all essential behavior and workflow without extraneous text.

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?

Covers purpose, lifecycle, and workflow, but lacks explicit mention of return format or what happens after the second call.

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

Parameters4/5

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

Schema has 100% coverage, but description adds workflow context (first call returns conflict, then pass mode) beyond enum descriptions.

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

Purpose5/5

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

The description clearly states the verb (soft-delete), resource (logged interaction), and identifier (UUID). It distinguishes from other 'remove_' tools by specifying it's for interactions.

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?

Describes the two-step workflow and recovery behavior, but does not explicitly compare to alternatives like purge_item or restore_item.

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

remove_memberRemove MemberA

Remove a team member from the company. Deletes their company_members row, revoking all financial access. Their historical data (tasks, interactions, transactions) is preserved. Cannot remove the last owner. Requires owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_user_idYesThe user_id of the member to remove.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully discloses side effects: deletes company_members row, revokes financial access, preserves historical data. Also mentions ownership constraint and role requirement, exceeding the burden for behavioral transparency.

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

Conciseness5/5

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

Four sentences, each adding essential information: main action, effect, preservation, constraint, and authorization. No wasted words, front-loaded with primary purpose.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description fully covers purpose, effects, constraints, and requirements. An agent has all necessary information to use it correctly.

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 single parameter target_user_id. The description does not add additional semantics beyond 'The user_id of the member to remove', 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?

Clearly states 'Remove a team member from the company', using a specific verb and resource. Differentiates from add_member and set_member_owner by focusing on removal and mentioning preservation of historical data.

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?

Explicitly states constraints ('Cannot remove the last owner') and authorization ('Requires owner role'), providing clear context for when the tool can be used. Does not explicitly mention 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.

remove_playbookRemove PlaybookA

Remove a playbook by archiving (hides from active views, recoverable) or permanently deleting. On first call, returns a conflict with ARCHIVE / DELETE / CANCEL options. Pass mode after the user decides. Run history is preserved in both cases. Tasks already created by previous runs are not affected.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDeprecated: use `resolution`. 'archive' / 'delete' / 'cancel'.
resolutionNoResolution after the removal conflict: 'confirm' deletes (recoverable for 30 days), 'archive' hides it (recoverable), 'cancel' aborts.
playbook_idYesPlaybook UUID or slug.

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided, but description fully discloses key behaviors: archiving hides from active views (recoverable), permanent delete is actually recoverable for 30 days, effects on run history and tasks, and the conflict flow. This exceeds expectations for a tool without 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?

Four sentences, each adding value: first states purpose, second explains conflict flow, third covers preservation of history and tasks. No redundant information. Well-structured and easy to parse.

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 interactive nature (two-step), no output schema, and moderate complexity, the description adequately explains inputs, effects, and behavior. It covers all user-facing aspects needed to use the tool correctly.

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

Parameters4/5

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

Schema covers 100% of parameters with descriptions, but the description adds critical context: the deprecated 'mode' parameter, the meaning of each 'resolution' enum value, and the overall two-step flow. This goes beyond raw schema information.

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 'Remove a playbook' with specific actions (archive/permanent delete) and distinguishes from sibling remove_* tools which target different entities. The two-step conflict resolution is unique to this tool.

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

Usage Guidelines4/5

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

Description explains the two-step process: first call returns a conflict, then pass mode after user decides. It also notes that run history and tasks are unaffected. However, it doesn't explicitly state when to prefer this over other deletion tools or specify prerequisites.

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

remove_playbook_stepRemove Playbook StepA

Remove a step from a playbook by archiving (hides from step list, recoverable) or permanently deleting. On first call, returns a conflict with ARCHIVE / DELETE / CANCEL options. Pass mode after the user decides. Tasks already created by previous runs are not affected.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDeprecated: use `resolution`. 'archive' / 'delete' / 'cancel'.
step_idYesPlaybook step UUID to remove.
resolutionNoResolution after the removal conflict: 'confirm' deletes (recoverable for 30 days), 'archive' hides it (recoverable), 'cancel' aborts.

TDQS

A3.9/5.0
Behavior3/5

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

Discloses archiving and deletion are recoverable and that tasks are unaffected. However, description says 'permanently deleting' while schema indicates deletion is recoverable for 30 days, creating a minor inaccuracy. No annotations provided, so description bears full burden.

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?

Three sentences front-load the action and method, then explain the conflict flow and side effect. No unnecessary words or repetition.

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?

Covers removal and conflict behavior but lacks details on response format, error conditions, and prerequisites. Given no output schema, description partially compensates by mentioning 'returns a conflict' but incomplete.

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. Description adds minimal value: only 'Pass mode after the user decides' which is a usage hint. Does not explain the deprecated mode vs resolution distinction.

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 'Remove a step from a playbook' with specific methods (archive/delete) and conflict behavior. It distinguishes from sibling removal tools by targeting playbook steps uniquely.

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?

Explicitly describes the two-step conflict resolution flow (first call returns conflict, then pass mode). Does not mention when not to use or compare with alternatives like update_playbook_step.

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

remove_projectRemove ProjectA

Remove a project by archiving (sets status to 'archived', recoverable) or permanently deleting. On first call, returns a conflict with ARCHIVE / DELETE / CANCEL options. Pass mode after the user decides. The project's tag is kept in the registry on archive. On delete, the project record and its registry tag are removed but tasks/customers keep the tag string in their arrays (orphaned). Run history referencing this project is preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDeprecated: use `resolution`. 'archive' / 'delete' / 'cancel'.
project_idYesProject UUID to remove.
resolutionNoResolution after the removal conflict: 'confirm' deletes (recoverable for 30 days), 'archive' hides it (recoverable), 'cancel' aborts.

TDQS

A3.8/5.0
Behavior2/5

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

Description claims 'permanently deleting' but schema states 'confirm' deletes recoverable for 30 days. This contradiction is misleading. Other behavioral details (side effects on tags, run history) are good, but the core inconsistency hurts reliability.

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?

Five efficient sentences covering function, interaction flow, and side effects. No wasted words. Well-structured for agent consumption.

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?

Covers core behavior, interaction steps, side effects, and recoverability (despite contradiction). Lacks return value description, which is noticeable given no output schema. Otherwise thorough.

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 3. Description adds context about mode being deprecated and the interactive usage, but does not significantly enhance parameter meaning beyond 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?

Clear verb and resource: 'Remove a project by archiving or permanently deleting.' Distinguishes between two modes and the interactive flow. Sets clear expectations for this specific remove tool among many siblings.

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?

Describes when to use (for removing a project) and the two-step process (first call returns conflict, then pass mode). Does not explicitly contrast with sibling remove tools but context makes it clear. Minor omission of when-not scenarios.

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

remove_tagRemove TagA

Remove a tag by archiving (hides from active views, recoverable) or permanently deleting. On first call, returns a conflict with ARCHIVE / DELETE / CANCEL options. Pass mode after the user decides. If the tag is owned by a project, the tool suggests removing the project instead. On delete, pass clean_items=true to also strip the tag from all tasks and customers that use it.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDeprecated: use `resolution`. 'archive' / 'delete' / 'cancel'.
tag_idYesTag registry UUID to remove.
cascadeNoWhen deleting, also remove this tag from all tasks, customers, and financial records that use it. If false, the registry entry is deleted but items keep the tag text (orphaned).
resolutionNoResolution after the removal conflict: 'confirm' deletes (recoverable for 30 days), 'archive' hides it (recoverable), 'cancel' aborts.
clean_itemsNoDeprecated: use `cascade`.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses conflict resolution, recoverability, cascading deletion, and project suggestion. It does not detail error cases or return values, but the behavioral traits are adequately covered for a removal 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?

The description is three sentences, front-loaded with the core action, and efficiently covers key points without waste. Every sentence adds value.

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 5 parameters and no output schema, the description covers the essential flow, conflict, recoverability, and cascading. It lacks details on return values or errors, but for a removal tool it is fairly 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 coverage is 100%, so baseline is 3. The description adds context about the conflict flow and clean_items, but clean_items is deprecated and may cause confusion. Overall, it provides some additional value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool removes a tag via archiving or deletion, including conflict resolution flow. It distinguishes from siblings like rename_tag and other removal tools by specifying the two-step conflict process and project ownership suggestion.

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 archive or delete a tag) and outlines the conflict resolution process. It also advises about project ownership suggesting an alternative. However, it does not explicitly state when not to use it or direct to specific siblings.

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

remove_taskRemove TaskB

Remove a task by archiving (hides from active views, recoverable) or permanently deleting. On first call, returns a conflict with ARCHIVE / DELETE / CANCEL options. Pass mode after the user decides. Delete removes the task and all its links and notes permanently. Archive sets archived_at and preserves everything.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDeprecated: use `resolution`. 'archive' / 'delete' / 'cancel'.
task_idYesTask UUID to remove.
resolutionNoResolution after the removal conflict: 'confirm' deletes (recoverable for 30 days), 'archive' hides it (recoverable), 'cancel' aborts.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It states delete is permanent, but the schema's 'resolution' field description says delete is recoverable for 30 days, creating a contradiction. The description also omits details about authorization requirements or side effects beyond what is mentioned.

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 relatively concise (three sentences) and front-loads the main purpose. It could be slightly tighter but contains no unnecessary fluff.

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 tool's moderate complexity (two-step flow) and absence of output schema, the description explains the basic flow and consequences but lacks details on the conflict response structure, error conditions, or how it fits among siblings like 'purge_item'.

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

Parameters4/5

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

Schema coverage is 100% and schema descriptions are adequate, but the description adds valuable context about the two-step process and what happens on first call. This enriches understanding beyond the raw schema.

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 removes tasks by archiving or deleting, and distinguishes between the two effects. However, it does not explicitly differentiate from sibling tools like 'purge_item' or 'restore_item', which might overlap in functionality.

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 the two-step interaction (first call returns conflict, then pass mode) but lacks guidance on when to use this tool instead of alternatives like 'complete_task' or 'purge_item'. No explicit when-not or comparative context is provided.

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

remove_transactionRemove TransactionA

Remove a transaction by archiving (hides from views and reports, recoverable) or permanently deleting (reverses the balance effect). On first call, returns a conflict with confirm / archive / cancel. If the transaction is one leg of a transfer, confirming the deletion removes both legs together to keep the books balanced.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDeprecated: use `resolution`. 'archive' / 'delete' / 'cancel'.
force_modeNoDeprecated: confirming a transfer-leg deletion now deletes both legs automatically. 'delete_both' is still accepted.
resolutionNoResolution after the removal conflict: 'confirm' deletes (recoverable for 30 days), 'archive' hides it (recoverable), 'cancel' aborts.
transaction_idYesUUID of the transaction to remove.

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses the conflict-first behavior, the automatic handling of transfer legs, and the recoverability of actions. It mentions the balance effect reversal for permanent deletion. Without annotations, this provides adequate transparency.

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

Conciseness5/5

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

The description is three sentences long, efficiently covering all essential aspects. 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?

Given no output schema, the description explains the conflict return and the effect of each resolution. It could mention the final response after confirmation, but the main interaction is well-covered.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds context on the two-step flow, resolution meanings, and deprecated fields. This adds value beyond the schema, explaining the interaction pattern.

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

Purpose5/5

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

The description clearly states the tool removes a transaction by archiving or deleting, and explains the two-step conflict resolution. It distinguishes well from sibling tools focused on adding or listing transactions.

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 the two modes (archive vs delete) and the conflict-first interaction. It provides guidance on handling transfer legs. However, it does not explicitly contrast with other removal tools like remove_account, but this is not needed as the tool is transaction-specific.

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

rename_tagRename TagA

Rename a registered tag. Updates the display name and slug. If the tag is in use and propagate is not explicitly set, a conflict response is returned asking whether to propagate the rename. Set propagate=true or propagate=false to skip the conflict.

ParametersJSON Schema
NameRequiredDescriptionDefault
tag_idYesTag registry UUID.
cascadeNoIf true, rename the tag on all tasks/customers/financial records that use it. If false, rename only the registry entry. If omitted and the tag is in use, a conflict is returned asking the user to decide.
new_nameYesNew display name for the tag.
propagateNoDeprecated: use `cascade`.

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description discloses key behaviors: renaming both display name and slug, conflict response when propagate is not set and tag is in use, and deprecation of propagate in favor of cascade.

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?

Three sentences, no fluff, each sentence adds essential information. Purpose is front-loaded.

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?

Covers main behavior and parameter dependencies adequately. Lacks detail on what exactly the conflict response contains, but sufficient for an agent to use correctly.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds meaning by explaining the conflict behavior and the relationship between propagate and cascade 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?

The description clearly states the action ('Rename a registered tag') and what it updates ('display name and slug'), distinguishing it from sibling tools like create_tag and remove_tag.

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 propagate/cascade to avoid conflict responses, but does not explicitly state when to avoid using the tool or mention alternatives.

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

restore_itemRestore Archived or Deleted ItemA

Restore a previously archived or soft-deleted item back to active state. Works for any entity type that supports archiving or deletion: customer, contact, task, tag, playbook, playbook_step, project, financial_account, financial_category, financial_transaction. Soft-deleted items are automatically purged after 30 days - restore before then to recover. Permission rules: org-scoped items can be restored by any company member; personal-scoped items (tasks) can only be restored by the creator or system owner.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesUUID of the archived or soft-deleted entity.
entity_typeYesType of entity to restore.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the 30-day auto-purge limit and permission rules for different scopes. However, it does not mention other behavioral traits such as idempotency, what happens if the item doesn't exist, or any side effects (e.g., restoring a task may affect linked entities).

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 four sentences, front-loaded with the core action. It is efficient with no obvious redundancy, though the list of entity types could be considered slightly verbose given the enum in the schema.

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 complexity (restoring items with time limits and varying permissions) and no output schema, the description covers key behavioral aspects, entity types, restrictions, and permissions. It omits potential error cases or return value details, but overall it is sufficiently complete for an agent to use the tool correctly.

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% (both parameters have descriptions in the schema). The description lists entity types and mentions UUID format for entity_id, adding marginal value over the schema. Baseline is 3, and the description does not significantly enhance parameter understanding beyond the schema.

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 'Restore a previously archived or soft-deleted item back to active state' and lists supported entity types. However, it does not explicitly differentiate from the sibling tool 'restore_items', which may be a batch version, so clarity is high but not maximal.

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

Usage Guidelines4/5

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

The description provides clear context for usage: restoration must be done within 30 days for soft-deleted items, and permission rules are given (org-scoped vs personal-scoped). It does not explicitly state when NOT to use or mention alternatives, but the context is sufficiently informative.

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

restore_itemsBatch Restore ItemsA

Restore many soft-deleted items at once (batch recover from the trash). Provide either an explicit items list (entity_type + entity_id pairs) OR filters: entity_type, older_than_days, or all. Restores are reversible - you can delete the items again - so this executes directly and returns a summary of what was recovered. Use purge_items to permanently delete instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoFilter: every recoverable item in the trash.
daysNoFilter look-back window in days. Defaults to 30.
itemsNoExplicit items to restore. Provide this OR filters.
entity_typeNoFilter: only this entity type.
older_than_daysNoFilter: only items deleted more than N days ago.

TDQS

A4.7/5.0
Behavior4/5

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

Discloses reversibility ('Restores are reversible - you can delete the items again'), direct execution ('executes directly'), and return type ('returns a summary'). No annotations, so description carries full burden. Could mention permissions or side effects, but sufficient for safe use.

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?

Three sentences covering purpose, parameter usage, and behavioral notes. No wasted words. Each sentence serves a distinct role. Front-loaded with purpose.

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 5 params, no annotations, no output schema, description covers all needed: how to call (items vs filters), behavior (reversible, direct), and what to expect (summary). Satisfies information needs for a batch restore tool.

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

Parameters4/5

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

Schema coverage 100% so baseline 3. Description adds value by clarifying mutual exclusivity of items and filters, grouping filter options, and noting default for days. Helps agent understand parameter relationships beyond 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?

Clear verb 'restore' with resource 'soft-deleted items' and scope 'batch'. Title 'Batch Restore Items' reinforces. Distinguishes from sibling 'restore_item' (singular) and 'purge_items' (permanent delete).

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

Usage Guidelines5/5

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

Explicitly states when to use: batch restore via items list or filters. Provides alternative: 'Use purge_items to permanently delete instead.' Covers both when-to and when-not.

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

run_playbookRun PlaybookA

Execute a playbook against a customer. Set preflight_only: true to inspect connector requirements and step breakdown WITHOUT executing — use this to check what's needed before committing to a run. In normal mode: creates all native_task steps as Founders OS tasks (linked to the customer) and returns external_action steps as structured instructions. IMPORTANT: After this tool returns in normal mode, check external_actions and execute each one using the appropriate connected MCP tools. If a connector is unavailable, create a native task using the fallback_task field from that step instead. The response always includes connector_requirements so you know what to check before executing.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoOptional context note logged with the run.
start_dateYesAnchor date (YYYY-MM-DD) for due_offset calculations and {{playbook.start_date}} placeholders.
customer_idNoCustomer UUID to run this playbook for. Strongly recommended — enables placeholder resolution.
playbook_idYesPlaybook UUID or slug.
preflight_onlyNoIf true, return connector requirements and a step summary WITHOUT executing. Use this to check what the playbook needs before committing to a run.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, description fully carries behavioral disclosure. Explains that preflight_only inspects without executing, normal mode creates tasks and returns external actions, and response includes connector requirements. Clearly a mutating tool with side effects.

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?

Every sentence adds value: defines tool, two modes, post-run instructions. No fluff, efficient structure with important warnings front-loaded.

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 5 parameters, no output schema, and many siblings, the description covers workflow (preflight check, execution, follow-up actions on external_actions and fallback_task). Implicitly explains return values. Minor gap: could specify structure of 'structured instructions'.

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 all 5 parameters with descriptions, so baseline is 3. Description reinforces preflight_only usage but doesn't add new semantic details beyond schema for other 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?

The description clearly states 'Execute a playbook against a customer' with specific verb and resource, and distinguishes between preflight and normal modes. It uniquely identifies the tool's core function among siblings.

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?

Provides explicit instructions for preflight mode to inspect before committing, and for normal mode details post-run actions including handling external actions and fallback tasks. Lacks explicit exclusion of alternatives but context is clear.

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

search_contactsSearch ContactsA

Search for contacts by name, email, phone, or role. Returns matching contacts with their customer/organization info. Use this when someone asks about a person by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return
queryYesSearch text (searches first name, last name, email, phone, role)

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It mentions returning contacts with customer/organization info, but omits details like pagination, ordering, or case sensitivity. Adequate but not fully transparent.

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

Conciseness5/5

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

Two sentences with front-loaded action and no redundancy. Every sentence contributes meaning.

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

Completeness4/5

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

Given no output schema and simple parameters, the description effectively covers purpose, searchable fields, and return info. Missing details about limit parameter influence, but still sufficient for a basic search tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by specifying that the query searches across name, email, phone, and role, enhancing the schema's description.

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 searches for contacts by name, email, phone, or role, and returns matching contacts with associated info. It uses a specific verb-resource pair and differentiates from siblings like search_customers.

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?

Explicitly says 'Use this when someone asks about a person by name,' providing a clear usage context. Could be improved by mentioning when not to use it (e.g., for organization searches) but still offers helpful guidance.

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

search_customersSearch CustomersA

Search customers by name, notes, city, state, or tags. Returns matching customers with summary info.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoConvenience filter for a single tag. Use `tags` for multiple.
tagsNoFilter to items carrying these tags. Combined per `tag_match` (default 'all': the item must carry every listed tag).
limitNoMax results to return
queryYesSearch text (searches organization name, notes, city, state)
tag_matchNoHow to combine `tags`: 'all' (item has every tag, default) or 'any' (item has at least one of them).
customer_typeNoFilter by customer type
customer_phaseNoFilter by lifecycle phase

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states it returns matching customers with summary info, but fails to disclose behavioral traits such as pagination, case sensitivity, ordering, or read-only nature. The description is minimal on behavior.

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

Conciseness5/5

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

The description is one sentence, front-loaded with the action, and contains no unnecessary words. It efficiently conveys the core functionality.

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 complexity (7 parameters, no output schema), the description is moderately complete. It mentions searchable fields and return of summary info, but omits details about pagination (limit parameter) and what 'summary info' includes. Could be more informative.

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

Parameters4/5

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

Schema coverage is 100%, providing detailed descriptions for all 7 parameters. The description adds value by listing the fields searched by the 'query' parameter (name, notes, city, state, tags), which is not redundant with 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 'search' and the resource 'customers', listing specific searchable fields (name, notes, city, state, tags). It distinguishes from sibling tools like list_customers (which lists all) and search_contacts (different resource).

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. It implies usage for searching by the listed fields, but no guidance on when not to use or comparison with list_customers or search_contacts.

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

set_financial_accessSet Financial AccessA

Grant or restrict a team member's access to financial tools. Requires owner role. Access levels: 'none' = no financial tools; 'read' = view only (balances, transactions, reports); 'write' = full access including add, edit, and delete. Owners cannot set their own access to 'none' or 'read' if they are the last owner — this would lock the company out of financial management.

ParametersJSON Schema
NameRequiredDescriptionDefault
levelYesThe financial access level to assign.
target_user_idYesThe user_id of the team member to update (matches FOUNDERS_OS_USER_ID).

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so the description shoulders the transparency burden. It discloses the role requirement, access levels, and a critical edge case (locking company out). This adds significant behavioral context beyond the schema.

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?

Four sentences with no waste. Front-loaded with main action, then role requirement, then level definitions, and finally an edge case. 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 no output schema, the description could mention return values, but for a mutation tool the current content is sufficient. It covers parameters, role, and a critical constraint. Sibling list is extensive but this tool's purpose is well-isolated.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds value by defining each enum value for 'level' ('none', 'read', 'write') with concrete capabilities, and explains the constraint on setting own access. This exceeds the baseline of 3.

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 ('grant or restrict'), the resource ('team member's access to financial tools'), and distinguishes from siblings like 'get_financial_access'. The purpose is specific and unambiguous.

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

Usage Guidelines4/5

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

The description explicitly requires 'owner role' and warns against setting own access to 'none' or 'read' if last owner. While it doesn't name alternative tools, the context makes it clear when to use this tool versus read-only siblings.

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

set_member_ownerSet Member OwnerA

Promote or demote a team member's owner status. Owners can manage financial access, add/remove members, and read the audit log. Promoting automatically grants 'write' financial access. You cannot demote the last remaining owner — add another owner first. Requires owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
is_ownerYestrue = promote to owner, false = demote from owner.
target_user_idYesThe user_id of the member to update.

TDQS

A4.3/5.0
Behavior4/5

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

Discloses key behaviors: auto-grant of write financial access on promotion, inability to demote last owner, and prerequisite. No annotations to contradict.

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?

Three concise sentences, front-loaded with core purpose, no unnecessary words.

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

Completeness5/5

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

For a simple two-parameter tool with no output schema, the description covers purpose, constraints, consequences, and prerequisites adequately.

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 provides 100% parameter descriptions; description adds no new parameter-level info beyond 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 tool promotes or demotes owner status, includes what owners can do, and distinguishes from sibling tools like remove_member or set_financial_access.

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?

Specifies required owner role and warns about demoting the last owner. Does not explicitly say when not to use, but context implies uniqueness.

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

set_transaction_customerSet Transaction CustomerA

Attribute an existing transaction to a customer, or detach it. Pass a customer_id to attribute the transaction, or null to clear the attribution.

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYesUUID of the customer to attribute, or null to detach.
transaction_idYesUUID of the transaction to update.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided; the description only states the basic mutation behavior. It lacks details on side effects, permissions, reversibility, error handling, or return values.

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, 23 words, front-loaded with core purpose. Every word contributes meaning with no redundancy.

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

Completeness3/5

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

For a simple mutation tool with two parameters, the description covers the basic action but omits edge cases like missing transaction/customer and idempotency.

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 parameter descriptions. The description adds minimal new meaning beyond echoing the schema, explaining the effect of null vs. UUID.

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 (attribute or detach) and the resource (existing transaction to a customer), distinguishing it from sibling tools like add_transaction or remove_transaction.

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 how to use the parameters (customer_id for attribution, null for detachment), but does not explicitly state when to use this tool vs alternatives or provide prerequisites.

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

show_capabilitiesShow CapabilitiesA

Returns example prompts and workflows organized by domain (CRM, Tasks, Finance, Feeds, Memory, Surfaces). Call this when a user asks 'what can you do?', 'show me what I can do', 'help me get started', or wants to explore what Founders OS offers. Lighter than the full usage guide - focused on natural-language examples rather than technical reference.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided. Description implies read-only behavior (returns examples) but does not explicitly state no side effects or auth requirements. However, the nature of the tool is clearly informational.

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 concise sentences, front-loaded with core purpose, and no wasted words.

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?

Tool has no input parameters and no output schema; description sufficiently explains what it returns (example prompts and workflows) and when to use. Complete for a simple info tool.

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, so baseline score of 4. Description adds no param info, which is acceptable given 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 clearly states it returns example prompts and workflows organized by domain. Distinguishes from sibling 'get_usage_guide' by noting it's lighter and focused on natural-language examples.

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

Usage Guidelines5/5

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

Explicitly specifies when to call: when user asks 'what can you do?', 'show me what I can do', 'help me get started', or wants to explore Founders OS. Contrasts with full usage guide.

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

subscribe_feedSubscribe to FeedA

Subscribe to an RSS, Atom, or JSON Feed. Fetches once to populate metadata if this is the first subscription to this URL in the company. Tags classify the feed (e.g. ['tech', 'ai']). Set pinned=true to include in morning briefing.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe RSS, Atom, or JSON Feed URL
tagsNoTags to classify this feed (e.g. ['tech', 'ai']). Default: ['other']
pinnedNoPin this feed so it appears in the morning briefing. Default: false

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description must cover behavior. It discloses that a fetch occurs on first subscription, tags are used for classification, and pinned means inclusion in morning briefing. This is good but could mention idempotency or error cases.

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 three sentences, each adding distinct value. The first sentence states purpose, the second adds side-effect context, the third explains optional parameters. No fluff.

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

Completeness4/5

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

For a tool with three parameters and no output schema, the description covers the key points: subscription type, first-fetch behavior, tagging, and pinning. It doesn't describe the return value, but that is often acceptable when no output schema is provided.

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

Parameters4/5

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

Schema describes all three parameters with basic info. The description adds value: it mentions the first-fetch behavior for URL, provides example tags, and explains the effect of pinned=true. This enriches the semantics 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 action 'Subscribe to an RSS, Atom, or JSON Feed.' This distinguishes it from sibling tools like list_feeds or get_feed_briefing, which are read-only or listing operations.

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 it (first subscription fetches metadata, tags classify feed, pinned for morning briefing). However, it does not explicitly state when not to use it or mention alternatives, such as import_starter_feeds or other subscription-related tools.

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

transfer_between_accountsTransfer Between AccountsA

Record a transfer of funds between two capital accounts. Both legs are marked exclude_from_reports=true so they don't skew P&L. If the inflow leg fails after the outflow succeeds, the outflow is automatically reversed to keep account balances consistent. For full atomicity, a future migration will wrap both legs in a single DB transaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesTransfer date in YYYY-MM-DD format.
amountYesAmount to transfer (positive number).
category_idYesCategory to assign (typically a 'Transfer' income/expense category).
descriptionYesDescription of the transfer.
to_account_idYesAccount to transfer to.
from_account_idYesAccount to transfer from.

TDQS

A4.4/5.0
Behavior5/5

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

The description fully discloses key behaviors: both legs are marked exclude_from_reports, automatic reversal of outflow if inflow leg fails, and future migration for atomicity. Without annotations, the description carries the full burden and addresses potential concerns about data consistency and reporting integrity.

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 concise with four sentences, each adding value: purpose, reporting behavior, automatic reversal, and future atomicity. It is front-loaded with the core action and keeps details relevant. 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?

While the description covers important behavioral aspects and error handling, it does not describe the return value or success/failure indication, which would be helpful given no output schema. However, the key contextual details (reversal, reporting) are well covered.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add additional meaning beyond what the schema provides for each parameter. It provides behavioral context (e.g., both legs) but no parameter-specific details beyond the schema definitions.

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 records a transfer between two capital accounts, with specific verb 'record a transfer' and resource 'between two capital accounts'. It distinguishes itself by mentioning that both legs are marked exclude_from_reports=true to avoid skewing P&L, which differentiates it from generic add_transaction.

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

Usage Guidelines4/5

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

The description provides context for when to use this tool (for capital account transfers that should not affect P&L) and explains the automatic reversal behavior. However, it does not explicitly state when not to use it or name alternative tools like add_transaction for non-transfer transactions. The guidance is clear but lacks exclusion criteria.

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

unpin_feedUnpin FeedA

Unpin a feed so it no longer appears in the morning briefing. The feed remains subscribed - you just won't see headlines in session start.

ParametersJSON Schema
NameRequiredDescriptionDefault
feed_idYesUUID of the feed to pin/unpin

TDQS

A4.4/5.0
Behavior4/5

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

No annotations exist, so the description conveys key behavior: the feed remains subscribed but headline display stops. It lacks details on error handling or idempotency, but is sufficient for a simple toggle.

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 concise sentences directly convey purpose and effect without extraneous 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 toggle with no output schema, the description covers the essential behavioral change. It could mention idempotency or error cases, but overall is 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 coverage is 100%, so baseline applies. The description adds no extra information about the feed_id parameter beyond what the schema provides, but that is acceptable.

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 (unpin), the resource (feed), and the consequence (removes from morning briefing), effectively distinguishing it from related operations like unsubscribe.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool: to stop seeing headlines in session start while keeping the subscription. It implicitly contrasts with unsubscribe, providing clear contextual guidance.

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

unsubscribe_feedUnsubscribe from FeedA

Unsubscribe from a feed. Only removes your subscription - other team members and the shared catalog entry are not affected. Bookmarks from this feed are preserved.

ParametersJSON Schema
NameRequiredDescriptionDefault
feed_idYesUUID of the feed subscription to remove

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description discloses non-destructive behavior: it only removes the user's subscription, does not affect team members or catalog, and preserves bookmarks. This provides sufficient transparency for a safe operation.

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 concise sentences, front-loaded with the main purpose. Every sentence adds value without redundancy.

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 single-parameter tool with no output schema, the description covers all necessary context: what it does, what it doesn't affect, and side effects on bookmarks.

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

Parameters3/5

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

The schema covers 100% of parameters with a description for 'feed_id'. The description adds no additional meaning beyond the schema, so 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 'Unsubscribe', the resource 'feed', and specifies the scope: 'Only removes your subscription'. It distinguishes from siblings like 'remove_bookmark' or 'remove_playbook'.

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 clarifies when to use this tool: to unsubscribe without affecting others or the shared catalog, and that bookmarks are preserved. It implies when not to use (e.g., to delete the feed entirely).

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

update_contactUpdate ContactC

Update a contact's details.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNo
emailNo
phoneNo
last_nameNo
contact_idYesContact UUID
first_nameNo
is_primaryNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so description must carry the full burden. It only says 'Update', which implies mutation, but no additional behavioral traits like permissions, idempotency, or side effects 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.

Conciseness3/5

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

The description is extremely concise (one sentence) but lacks necessary detail. It is not verbose, but conciseness is penalized because it omits valuable information.

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?

With 7 parameters, no output schema, and no behavioral annotations, the description is far from complete. It does not explain the scope of updates or return values.

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

Parameters2/5

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

Schema coverage is only 14% (only contact_id has a description). The description adds no meaning to parameters beyond 'details', so it fails to compensate for low coverage.

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 'Update' and resource 'a contact's details', making the purpose obvious. However, it does not differentiate from sibling update tools like 'update_customer' or 'update_task'.

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, no prerequisites or exclusions mentioned. The description is too brief to provide usage context.

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

update_customerUpdate CustomerC

Update fields on an existing customer record.

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNo
cityNo
tagsNo
notesNo
stateNo
websiteNo
customer_idYesCustomer UUID
address_line1No
address_line2No
customer_typeNo
customer_phaseNoLifecycle phase
organization_nameNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits, but it only says 'update fields', which is vague. It doesn't mention idempotency, error handling for missing customer_id, side effects, or return values.

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 very concise (one sentence) and front-loaded with the verb and resource. However, it sacrifices important details, making it too terse for a tool with 12 parameters.

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 12 parameters, no output schema, and no annotations, the description is incomplete. It doesn't explain partial updates, required fields beyond customer_id, or what the response contains.

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

Parameters1/5

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

Schema description coverage is only 17% (only customer_id and customer_phase have descriptions). The description does not add any meaning for the other 10 parameters, so it fails to compensate for the low coverage.

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 'update' and the resource 'customer record', differentiating it from sibling tools like add_customer, get_customer, and remove_customer. However, it doesn't specify that only provided fields are updated (partial update), which would enhance clarity.

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 given on when to use this tool versus alternatives like update_contact or when not to use it. The description lacks any usage context or prerequisites.

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

update_playbookUpdate PlaybookA

Update a playbook's name, slug, or description. Only provided fields are changed. Steps are not affected — use update_playbook_step for those.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew human-readable name.
slugNoNew slug. Must be unique per company.
descriptionNoNew description.
playbook_idYesPlaybook UUID or slug.

TDQS

A4.4/5.0
Behavior4/5

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

Discloses that only provided fields are changed and steps are unaffected, which are key behavioral traits. However, does not mention validation rules like slug uniqueness (present in schema) or any side effects. Without annotations, this is acceptable but slightly incomplete.

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 concise sentences effectively communicate purpose, scope, and alternative. Front-loads the action and resource, no 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?

Covers essential aspects: what fields can be updated, partial update behavior, and separation from step updates. Lacks mention of return value (no output schema) but is sufficient for a simple mutation tool.

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

Parameters3/5

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

Schema coverage is 100% with good parameter descriptions, so baseline is 3. The description adds context about partial updates but does not enhance understanding of individual parameters 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 'Update' and the resource 'playbook', specifies the updatable fields (name, slug, description), and distinguishes from sibling tool 'update_playbook_step' by noting steps are not affected.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool (to update name/slug/description) and when not to (for steps, use update_playbook_step). Also clarifies that only provided fields are changed, guiding partial updates.

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

update_playbook_stepUpdate Playbook StepB

Update any fields on a playbook step. Only provided fields are changed. Use to refine a step's title, description, due_offset, assigned_to, or action params.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoUpdated title. Supports {{placeholders}}.
actionNo
paramsNoUpdated connector params.
step_idYesPlaybook step UUID.
assigneeNoDeprecated: use `assigned_to`.
priorityNo
connectorNo
due_offsetNoUpdated due offset in days. Pass -1 to clear.
assigned_toNoUpdated assignee for native_task steps.
descriptionNoUpdated description.
order_indexNoNew position in step sequence.
fallback_taskNoUpdated fallback task title.

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It mentions 'Only provided fields are changed' indicating a partial update, but does not disclose side effects, permission requirements, or error handling. Important traits are missing.

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 primary action and behavioral note. Every word is purposeful; no redundancy. Excellent 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 12 parameters, nested objects (params), and no output schema, the description is too brief. It omits explanations for many parameters, return behavior, and error cases. A more complete description would cover these aspects.

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 75% (9 of 12 params have descriptions). The description adds value by explaining the update semantics and listing some parameters, but does not clarify all params (e.g., priority, connector, order_index). It provides moderate additional context 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 'Update' and the resource 'playbook step', listing specific fields. It is distinct from sibling tools which target different entities.

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 gives a usage context ('Use to refine a step's title, ...') but does not explicitly state when not to use or compare with alternatives like add_playbook_step or remove_playbook_step. Guidance is implied but not directives.

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

update_projectUpdate ProjectA

Update a project's name, description, or status. Name changes trigger a tag rename with propagation conflict if the tag is in use. Status change to 'completed' or 'archived' triggers a conflict if tasks with the project's tag are still open.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew display name.
statusNoNew status.
cascadeNoOn rename: true also renames the tag on all tasks/customers; false updates only the registry.
project_idYesProject UUID.
resolutionNoResolution for the open-tasks guard: 'confirm' archives/completes anyway, 'cancel' aborts.
descriptionNoNew description.
confirm_archiveNoDeprecated: use `resolution: "confirm"`. Proceed with completing/archiving despite open tasks.
propagate_renameNoDeprecated: use `cascade`. Propagate or skip the tag rename on tasks/customers.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals important side effects: name changes trigger a tag rename with propagation conflict, and status changes to 'completed' or 'archived' trigger a conflict if tasks still have the project's tag. Deprecated parameters are also noted. However, it does not describe error states or behavior when no changes are made, but for a mutation tool, this is good transparency.

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

Conciseness5/5

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

The description is extremely concise: two sentences that front-load the main action and immediately dive into key behaviors. Every sentence is informative, and there is no redundant or extraneous text. This is an excellent example of efficient communication.

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 complexity of 8 parameters (many optional) and no output schema, the description covers core behaviors and side effects well. It explains the tag rename and status conflict scenarios, which are critical for safe usage. It does not describe return values or error conditions, but for a mutation tool, the main behaviors are sufficiently covered.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents parameters. The description adds value by explaining the behavioral interaction between parameters like 'cascade' (rename propagation) and 'resolution' (conflict handling) in context. It integrates these into the overall behavior description, going beyond the isolated schema explanations.

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 resource 'project', and specifies the fields that can be changed (name, description, or status). This distinguishes it from sibling tools like create_project, update_task, etc., which have different purposes. The description also mentions side effects like tag rename and conflict on status change, adding clarity.

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

Usage Guidelines3/5

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

The description does not explicitly provide guidance on when to use this tool versus alternatives. It implies usage for updating project details but lacks explicit 'use this when' or 'do not use if' statements. No exclusions or alternative suggestions are given, so the agent must infer usage from the tool name and purpose.

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

update_taskUpdate TaskA

Update any fields on a task. Only provided fields are changed. Setting status to 'done' automatically sets completed_at. If the response contains a conflict field, the update was NOT applied. Present all options to the user using an interactive chooser (AskUserQuestion) if available, then retry with the selected date.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
scopeNo
titleNo
statusNoNew status.
task_idYesTask UUID.
due_dateNoYYYY-MM-DD. Pass empty string to clear.
priorityNo
assigned_toNoUser ID or '@claude' / '@gpt'. Pass empty string to unassign.
descriptionNo
due_date_dayNoExpected day of the week for due_date. If provided, the server validates it matches. Catches errors when converting 'due Thursday' to a date. Mismatch returns the correct day and nearby alternatives.
blocked_reasonNo
blocked_by_task_idNoUUID of a blocking task. Pass empty string to clear the dependency.

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden. It discloses important behaviors: partial updates only, automatic setting of completed_at when status is 'done', and conflict handling. However, it does not mention authorization, side effects on other fields, or rate limits.

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 relatively concise with three sentences covering main behavior and conflict handling. It could be more structured but avoids verbosity.

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 12-parameter tool with no output schema and no annotations, the description covers the core update behavior and a specific edge case (conflict), but is incomplete regarding response format, mutation of other fields, and prerequisites.

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

Parameters2/5

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

Schema description coverage is 50%, but the tool description adds no parameter-specific meaning beyond the schema. It does not describe any of the 12 parameters, leaving the agent to rely solely on the schema's incomplete descriptions.

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

Purpose5/5

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

The description clearly states 'Update any fields on a task. Only provided fields are changed.' This specifies the verb (update) and resource (task), and the partial update semantics distinguish it from sibling tools like assign_task or complete_task.

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 includes conflict handling instructions ('If response contains conflict field... present options... retry'), but does not provide explicit guidance on when to use this tool versus alternatives like assign_task or complete_task. The usage context is implied but not stated.

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

TDQS

A3.6/5.0
Disambiguation4/5

With 101 tools, there is potential for confusion, but the consistent verb_noun naming and detailed descriptions clearly differentiate each tool's purpose. A few tools like add_account vs add_category could be momentarily confusing, but their entity-specific descriptions resolve ambiguity.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case (e.g., add_account, list_tasks, remove_customer). There are no deviations, making it easy to predict tool names based on action and entity.

Tool Count2/5

101 tools is excessive for an MCP server, far beyond the typical 3-15 range. While the server covers multiple domains (CRM, tasks, finance, feeds, playbooks, memory), the vast number of tools can overwhelm agents and increase selection errors. A more focused or modular approach would be appropriate.

Completeness5/5

The tool set provides comprehensive coverage across all domains: full CRUD for customers, contacts, tasks, projects, tags, playbooks, and financial entities, plus search, reporting, memory management, feeds, and session orientation. There are no obvious gaps that would hinder common workflows.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Self-hosted MCP server giving AI agents persistent memory for personalization and context across conversations.
    276
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Persistent memory with semantic search for Claude and MCP-compatible clients, storing context that survives conversations and can be retrieved intelligently.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A self-hosted server providing shared memory, RAG document search, project maps, and role-based prompts for all AI agents via MCP and REST, enabling persistent context across devices and tools.
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A self-hosted MCP server that provides any LLM with a graph-backed memory layer of your life—tasks, email, finance, contacts, calendar—plus autonomous agent offices that act on your behalf.
    1
    Apache 2.0

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/OurThinkTank/founders-os'

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