feedback.signal

Live

Customer-side feedback signal. modification_delta live; other kinds preview (V1.1+).

CategoryFeedback
JSON-RPCtools/call
EndpointPOST /mcp
Sourcepackages/feedback-learning/src/tools/feedback-signal.ts

Description

MVP supports signal_kind="modification_delta" end-to-end (mirrors the trigger.complete executed_modified path). Other signal_kind values return feature_not_available. Per ADR-0021 §learning-channel.

Input schema

FieldTypeRequiredDescription
target_idstringyesdecision_id, action_id, rule_id, or trigger_id.
signal_kind'modification_delta' | 'rule_correction' | 'trust_correction' | 'voice_correction'yesOnly modification_delta is implemented at MVP.
payloadobjectnoShape varies per signal_kind. For modification_delta, same as the original action payload.
source'user' | 'customer_inference' | 'system'yesWhere the signal originated.

Output shape

typescript
{ signal_id: string; ok: true }

Example call

JSON-RPC tools/call request body (omit the JSON-RPC envelope when using an SDK; the SDK adds it for you):

jsontools/call params
{
  "name": "feedback.signal",
  "arguments": {
    "target_id": "act_01HX...",
    "signal_kind": "modification_delta",
    "payload": { "body_draft": "Hey Marcus — actually, let's push to next week." },
    "source": "user"
  }
}

Example response

Tool results are always wrapped as content[0].text with a stringified JSON body. The shape below is what you get back from JSON.parse(result.content[0].text):

jsonparsed result body
{ "signal_id": "fbsig_01H...", "ok": true }

Errors this tool can return

CodeMeaning
invalid_argumentsTool input failed Zod validation.
unauthorizedMissing or invalid bearer token.
quota_exceededPer-minute, daily call, or daily inference budget exceeded.
feature_not_availableThe tool is registered but the underlying capability is not wired in this build.

See the full error catalog for resolution steps on each code, plus the standard transport-layer responses (401, 429).

Notes