fix: properly await API call and handle validation errors gracefully #112
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.
Summary
Fixes #104 - The MCP server crashed on Xero API validation errors (HTTP 400) due to unhandled promise rejections.
Root Causes & Fixes
1. Missing
awaitinupdateBankTransactionThe API call at line 49 was not awaited, causing promises to be fire-and-forget:
2. No extraction of Xero validation errors
Enhanced
formatErrorto handle 400 status codes and extract meaningful validation messages from Xero's error response structure:// Extracts from: error.response.body.Elements[0].ValidationErrors[].MessageChanges
src/handlers/update-xero-bank-transaction.handler.ts: Added missingawait, return actual API responsesrc/helpers/format-error.ts: Added 400 status handling with validation error extractionTest plan