Skip to content

feat(agent-toolkit): state prerequisite tool ordering in tool descriptions - #463

Open
RomKadria wants to merge 1 commit into
masterfrom
feature/romka/tool-prerequisite-descriptions
Open

feat(agent-toolkit): state prerequisite tool ordering in tool descriptions#463
RomKadria wants to merge 1 commit into
masterfrom
feature/romka/tool-prerequisite-descriptions

Conversation

@RomKadria

Copy link
Copy Markdown
Collaborator

What

Some tools are prerequisites for others — get_column_type_info supplies the settings schema create_column needs, get_board_schema supplies the column id and revision update_column needs, and so on. That ordering was often unstated: sometimes buried in a single field's .describe(), sometimes only on one side of the pair, sometimes missing entirely.

create_column's full description was "Create a new column in a monday.com board" — the pointer to get_column_type_info existed only on the columnSettings field. Callers guessed column ids, revisions, question ids, and settings shapes instead of fetching them first.

This audits every tool description in the toolkit and states the prerequisite on both sides of each pair: the upstream tool says what it precedes, the downstream tool says what to call first.

Chains documented

Prerequisite Now stated as required before
get_column_type_info create_column, update_column, manage_object_schema_columns
get_board_schema update_column (revision), delete_column, configure_ai_column, remove_ai_from_column
get_board_info the 6 item tools that already declared it, plus the 4 view tools
get_object_schemas the 6 object-schema writers (ids + revision)
get_form create_form_submission, form_questions_editor, update_form
get_graphql_schema + get_type_details all_monday_api, all_api_read, all_api_write
list_automations manage_automations (only way to resolve an id)
get_board_activity (includeData=true) undo_action (action_record_uuid)
get_sprints_metadata get_sprint_summary (sprintId)

Pairs already covered in both directions were left alone: all_widgets_schemacreate_widget, get_asset_upload_urlfinalize_asset_upload, read_docsupdate_doc, use_templatecheck_template_status, agent_catalogmanage_agent_*, link_board_items_workflow.

monday-apps-tools/ is intentionally out of scope for this PR.

Scope

Descriptions only — no input schemas, GraphQL operations, or behavior changed. 24 tool files + CHANGELOG + version bump to 5.64.3.

Testing

  • npx tsc --noEmit clean
  • Full suite passes: 71 suites / 1317 tests, including tool-description-safety.test.ts, which rejects ; and backticks in descriptions (a real constraint the new text was written around)

🤖 Generated with Claude Code

…tions

Discovery tools (schema/id/revision lookups) and the write tools that
depend on them often did not state the ordering between them. The
prerequisite was sometimes buried in a field description or missing
entirely, so callers guessed column ids, revisions, question ids, and
settings shapes instead of fetching them first.

Prerequisites are now stated on both sides of each pair: the upstream
tool says what it should be called before, the downstream tool says what
to call first. Descriptions only - no input schemas or behavior changed.

Chains documented:
- get_column_type_info -> create_column, update_column,
  manage_object_schema_columns
- get_board_schema -> update_column (revision), delete_column,
  configure_ai_column, remove_ai_from_column
- get_board_info -> the six item tools that already declared it as a
  required precondition, plus the four view tools
- get_object_schemas -> the six object-schema writers
- get_form -> create_form_submission, form_questions_editor, update_form
- get_graphql_schema + get_type_details -> all_monday_api,
  all_api_read, all_api_write
- list_automations -> manage_automations
- get_board_activity (includeData=true) -> undo_action
- get_sprints_metadata -> get_sprint_summary

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
getDescription(): string {
return `Create a new board view (tab) with optional filters and sorting. This creates a saved view on a monday.com board that users can switch to.

[REQUIRED PRECONDITION]: If you pass filters or sorting, call get_board_info first to get the board column IDs, column types, and status label indexes. Filter rules reference real column IDs and, for status columns, numeric label indexes — do not guess them.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before sending the filters, use get_column_type_info with fetchMode "${ColumnTypeInfoFetchMode.Guidelines}" and use data.guidelines.filter (null if that type has no documented rules)

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.

2 participants