Skip to content

Add custom fields support, list_fields tool, and additional getters - #1

Open
dobobaie wants to merge 3 commits into
runespoor-engineering:mainfrom
dobobaie:feat/custom-fields-and-new-tools
Open

Add custom fields support, list_fields tool, and additional getters#1
dobobaie wants to merge 3 commits into
runespoor-engineering:mainfrom
dobobaie:feat/custom-fields-and-new-tools

Conversation

@dobobaie

Copy link
Copy Markdown
  • Add testmo_list_fields tool for listing custom fields per project
  • Add custom field support (custom_preconditions, custom_steps, custom_expected) to testmo_update_case with additionalProperties passthrough
  • Bypass SDK constructFromObject in create/update case handlers to preserve custom fields
  • Pass additional fields (template_id, state_id, estimate) in single-case creation
  • Improve error handling to extract body/status from API errors
  • Update README to document all new tools (fields, get_case, get_folder, get_automation_source, get_group, get_role, get_user)

Eddy Mhalli and others added 3 commits April 13, 2026 08:02
- Add testmo_list_fields tool for listing custom fields per project
- Add custom field support (custom_preconditions, custom_steps, custom_expected)
  to testmo_update_case with additionalProperties passthrough
- Bypass SDK constructFromObject in create/update case handlers to preserve
  custom fields
- Pass additional fields (template_id, state_id, estimate) in single-case
  creation
- Improve error handling to extract body/status from API errors
- Update README to document all new tools (fields, get_case, get_folder,
  get_automation_source, get_group, get_role, get_user)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Declare `issues` and `tags` as arrays in the testmo_update_case and
testmo_create_case input schemas. Undeclared fields are serialized as
strings by the MCP client, so passing issue links previously failed with
"The issues field is not of type array" — the same class of bug already
handled for custom_* via coerceCustomValue. Generalize that coercion with
an ARRAY_FIELDS set so a stringified array is still recovered.

Payload per the SDK's UpdateRepositoryCase model: an array of issue ids or
of {display_id, integration_id, connection_project_id} objects. Note that
Testmo replaces the case's whole issue list, so callers must merge.

Also included (pre-existing work on this branch): custom_* field coercion,
raw-HTTP get_case to bypass SDK model deserialization stripping custom
fields, and API client exposure.

Verified end-to-end against project 2: 19 cases linked across 4 Jira keys,
with existing links preserved on the 4 cases that already had them.
testmo_get_case rebuilt its request as a raw HTTP call to keep custom
fields, but dropped the caller's `expands` parameter. `issues` — the
native Jira tracker links — is absent from the default case payload, so
the field was unreadable through this server even though the schema
advertised the parameter. Forward it.

Also ignore package-lock.json and yarn.lock: this project declares pnpm
and tracks pnpm-lock.yaml, so a stray npm lockfile is noise.
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.

1 participant