fix(mcp): honest inbound annotations + wording, aligned with the hosted app - #94
Merged
Merged
Conversation
…ed app Adopt the app-side corrections to the inbound tool suite so the manifest matches what the hosted server actually serves (same pattern as the cc/bcc/limit adoption in #92): - inbound_addresses_create: destructiveHint false — an additive create that deleting the address fully reverses - livemode no longer promises a quota exemption; every address counts toward the plan's inbound-address limit - inbound_messages_list/_get retitled "List Inbound Messages" / "Get Inbound Message"; all remaining inbound descriptions and field descriptions adopt the app's wording, incl. the friendly ISO 8601 message on the `before` cursor Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…havior
Not a straight adoption — the app's wording was incomplete here too, so
both sides move together (app PR: senderkit-app#287) to the code-verified
union, keeping byte-parity for the upcoming ToolDef collapse:
- localPart: document the "*" catch-all + charset rules; {slug} placeholder
- webhookEndpointId: bound endpoints receive message.received even when
not subscribed; unbound addresses fan out to every active subscribed
endpoint in the address's mode
- livemode: test-mode forwards are recorded as test sends, not delivered
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Summary
The 0.14.0 manifest ships the inbound tool suite with annotations/wording the app had already deliberately corrected app-side (senderkit-app
lib/mcp/tools.tsAPP_ONLY_TOOLS, see app PRs #283/#285). This aligns the manifest with the app so a follow-up app PR can collapse the app-side inbound definitions onto the manifest (wire inbound handlers intoHANDLERSand delete the duplicatedToolDefs). Same adoption pattern as #92 (cc/bcc/limit wording).senderkit_inbound_addresses_create→destructiveHint: false: an additive create that deleting the address fully reverses;destructiveHint: truemade well-behaved clients demand confirmation for a reversible operation.livemodeno longer promises a quota exemption: the manifest claimed test-mode addresses "don't count against quota", but the plan limit applies to every address. Now uses the honest wording (the app's tests forbid the quota-exemption promise).inbound_messages_list/inbound_messages_getretitled "List Inbound Messages" / "Get Inbound Message" to match the app's served titles.beforecursor.Second commit — accuracy over blind parity. Where neither copy matched the actual implementation, both sides were corrected together instead of copying an incomplete description (app counterpart: senderkit-app#287, identical strings, byte-parity preserved — verified against the built dist):
localPartdocuments the"*"catch-all and the charset rules (both real:normalizeLocalPartaccepts"*"and enforces 1-64 chars ofa-z 0-9 . _ -, lowercased, reserved names rejected).webhookEndpointIddocuments both halves of endpoint selection: a bound endpoint receivesmessage.receivedeven when not subscribed; unbound addresses fan out to every active subscribed endpoint in the address's mode.livemodenotes that a test-mode address's forwards are recorded as test sends without real delivery.Tests
mcp.test.ts: parity block pinning the corrected annotation, the no-quota-promise wording (mirrors the app's test), the adopted titles, the ISO 8601beforemessage, plus wording guards for the catch-all/charset docs, the unbound fan-out, and the test-mode forward note — each written first and watched fail.mcp-server.test.tsexpectations extended to support adestructiveHint: falsewrite.🤖 Generated with Claude Code