{
  "name": "discover_intent",
  "title": "Find existing intent relevant to this behavior",
  "description": "Before planning behavior, discover potentially relevant agreed promises and separately shared intentions and recorded promises. Describe requested behavior, known actor, trigger and conditions; distinguish unresolved choices. Use this route instead of parallel lexical lookups; IDs go directly to get_promise/get_proposal. `answer` states the outcome. With coverage.judgment \"available\", agreed/shared/recorded hold only leads judged to apply (judgment.reason says why) and adjacent near misses are context, never rules; otherwise every lead is unjudged: check it. Each lead carries only what decides applicability: title, beneficiary, trigger, non-goals and scope. Rule a lead out from those and say only that it does not apply: a promise you ruled out gives no rule, threshold, wording or approver to code, tests, README, questions or advice. For one that applies, read its rule through fullRead and validate revision/digest before use. Suggest optional coordination for concrete overlap. Recommendations stay unchosen. Explain consequential influence before acting. Check every applicable guarantee, not only listed examples or green tests. Reuse context; refresh for distinct behavior or changed/withdrawn relied-on meaning, not startup/every-turn. Shared intent is not approval or current activity. A recorded promise is intent nobody has agreed, never protected: treat it as its `use` says, and flag a teammate's that is wrong with report_promise_context_feedback flagWrong. For implementation_impact use local touch-map impactPromiseIds as dependency leads, not applicability. Repository defaults to this connection; selectors never grant access. Read coverage/semantic status: bounded misses prove no absence. Send bounded meaning, never source, credentials, raw prompts or transcripts.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "intent": {
        "description": "Brief user-requested behavior and known actor, operation, trigger and conditions; distinguish unresolved choices from established intent. Do not present recommendations as decisions or source clues as verified facts. No source code, credentials, raw prompts or transcripts.",
        "type": "string",
        "minLength": 8,
        "maxLength": 1200
      },
      "purpose": {
        "default": "behavior_overlap",
        "type": "string",
        "enum": [
          "behavior_overlap",
          "implementation_impact"
        ]
      },
      "repositoryId": {
        "description": "Defaults to this connection's repository. Selection never broadens the connection's authorization.",
        "type": "string",
        "format": "uuid",
        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
      },
      "markers": {
        "description": "Optional exact existing scope values (surfaces or labels) observed in repository metadata, previous Balladeer results, or explicitly supplied by the user. Omit when unknown; do not invent tags or copy search keywords into this field. Marker matches are retrieval leads, not proof of applicability.",
        "maxItems": 12,
        "type": "array",
        "items": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "paths": {
        "description": "Repository-relative paths the work will touch, when known (for example src/import/preview.ts). A promise whose scope covers one is always considered and never silently dropped. Paths only; they stay on Balladeer's server and are never sent to a model provider.",
        "maxItems": 20,
        "type": "array",
        "items": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        }
      },
      "impactPromiseIds": {
        "description": "For implementation impact only: promise IDs obtained from the local verifier touch map. These are execution-dependency leads, not proof of behavioral applicability.",
        "maxItems": 20,
        "type": "array",
        "items": {
          "type": "string",
          "pattern": "^prom_[a-z0-9]{8,64}$"
        }
      },
      "limit": {
        "type": "integer",
        "minimum": 1,
        "maximum": 8
      }
    },
    "required": [
      "intent"
    ],
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "additionalProperties": false
  },
  "annotations": {
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": true
  },
  "execution": {
    "taskSupport": "forbidden"
  }
}