Skip to content

Tighten tool nomenclature: one naming rule across the three pillars - #20

Merged
rutgerhofste merged 1 commit into
mainfrom
claude/tool-nomenclature
Sep 16, 2026
Merged

rutgerhofste merged 1 commit into
mainfrom
claude/tool-nomenclature

Conversation

@rutgerhofste

Copy link
Copy Markdown
Member

Closes #19.

25 tools across three pillars, named four different ways. One rule — <pillar>_<verb> for the pillar's own object, <pillar>_<verb>_<object> for anything else in it — already fitted 19 of them, so six are renamed to match and the rule goes in CLAUDE.md where it can be held to.

Each pillar has exactly one primary object: mail has messages, calendar has events, contacts has contacts. Naming it is redundant — which contacts already knew (contacts_create, not contacts_create_contact) and calendar did not.

calendar_search_events  ->  calendar_search
calendar_read_event     ->  calendar_read
calendar_create_event   ->  calendar_create
calendar_update_event   ->  calendar_update
calendar_delete_event   ->  calendar_delete
mail_draft              ->  mail_create_draft

mail_draft was the one tool named with a noun while its two siblings, mail_edit_draft and mail_send_draft, lead with the verb.

Kept on purpose

CLAUDE.md now says why, so this does not get re-opened:

  • contacts stays plural while mail and calendar are singular. The three pillars have been written that way since v1; it is the namespace's name, not a bug worth six more renames across two CLAUDE.mds, the README and knowledge.py for one letter of symmetry.
  • mail_flag / mail_mark_read stay. Both already fit the rule, and they use the words a person would say rather than a symmetrical set_flagged / set_read.

Cost

Breaking change to the MCP surface: a renamed tool breaks any saved instruction in an AI client that names it. Worth doing at six tools in a free beta rather than at thirty with customers.

make test (282 passed), make lint and ty are green. make test-int was not run — no Docker in this session.

Companion

pantalytics/squirrel-mcp-admin#79 carries the same renames in its smoke script and usage.tool_family, plus the SQUIRREL_MCP_REF bump. The two must ship together — these names have to change on both sides at once.

🤖 Generated with Claude Code

https://claude.ai/code/session_01K2DMxTXFL1aubHfjjEYCB6


Generated by Claude Code

25 tools across three pillars, named four different ways. One rule --
<pillar>_<verb> for the pillar's own object, <pillar>_<verb>_<object> for
anything else in it -- already fitted 19 of them, so six are renamed to match
and the rule goes in CLAUDE.md where it can be held to.

Each pillar has exactly one primary object: mail has messages, calendar has
events, contacts has contacts. Naming it is redundant, which contacts already
knew (contacts_create, not contacts_create_contact) and calendar did not, so
the five calendar_*_event tools lose the suffix. And mail_draft was the one
tool named with a noun while its two siblings, mail_edit_draft and
mail_send_draft, lead with the verb; it becomes mail_create_draft.

    calendar_search_events  -> calendar_search
    calendar_read_event     -> calendar_read
    calendar_create_event   -> calendar_create
    calendar_update_event   -> calendar_update
    calendar_delete_event   -> calendar_delete
    mail_draft              -> mail_create_draft

Two spellings survive on purpose and CLAUDE.md says so, to stop this being
re-opened. contacts stays plural while mail and calendar are singular: the
three pillars have been written that way since v1 and it is the namespace's
name, not a bug worth six more renames. mail_flag and mail_mark_read keep the
words a person would use rather than a symmetrical set_flagged / set_read.

This is a breaking change to the MCP surface -- a renamed tool breaks any saved
instruction in an AI client that names it -- and squirrel-mcp-admin registers
this same tool layer, so both repos ship it together. Worth doing at six tools
in a free beta rather than at thirty with customers.

Closes #19.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K2DMxTXFL1aubHfjjEYCB6
@rutgerhofste
rutgerhofste marked this pull request as ready for review September 16, 2026 08:50
@rutgerhofste
rutgerhofste merged commit c1a79e7 into main Sep 16, 2026
3 checks passed
@rutgerhofste
rutgerhofste deleted the claude/tool-nomenclature branch September 16, 2026 08:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Tighten tool nomenclature: one naming rule across the three pillars

2 participants