feat(agent-toolkit): state prerequisite tool ordering in tool descriptions - #463
Open
RomKadria wants to merge 1 commit into
Open
feat(agent-toolkit): state prerequisite tool ordering in tool descriptions#463RomKadria wants to merge 1 commit into
RomKadria wants to merge 1 commit into
Conversation
…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>
stasshw
reviewed
Aug 20, 2026
| 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. |
Collaborator
There was a problem hiding this comment.
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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Some tools are prerequisites for others —
get_column_type_infosupplies the settings schemacreate_columnneeds,get_board_schemasupplies the column id and revisionupdate_columnneeds, 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 toget_column_type_infoexisted only on thecolumnSettingsfield. 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
get_column_type_infocreate_column,update_column,manage_object_schema_columnsget_board_schemaupdate_column(revision),delete_column,configure_ai_column,remove_ai_from_columnget_board_infoget_object_schemasget_formcreate_form_submission,form_questions_editor,update_formget_graphql_schema+get_type_detailsall_monday_api,all_api_read,all_api_writelist_automationsmanage_automations(only way to resolve an id)get_board_activity(includeData=true)undo_action(action_record_uuid)get_sprints_metadataget_sprint_summary(sprintId)Pairs already covered in both directions were left alone:
all_widgets_schema→create_widget,get_asset_upload_url→finalize_asset_upload,read_docs→update_doc,use_template→check_template_status,agent_catalog→manage_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 --noEmitcleantool-description-safety.test.ts, which rejects;and backticks in descriptions (a real constraint the new text was written around)🤖 Generated with Claude Code