# discover_intent

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.

Reviewed 2026-10-01. Read the [current operating instructions](https://app.balladeer.ai/agent) and the [tool index](/docs/mcp-reference.md). This reference does not authorize the action.

## Parameters

```json
{
  "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
}
```

## Effect annotations

```json
{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}
```
