Skip to content

Bug_201_MUST_FIX: PROMPT-FUNC-003 — Vendor RULES references findrive__get_file by MCP name but CAPABILITIES describes FinDrive in plain language — inconsistency #444

@steadhac

Description

@steadhac

Component: finbot/agents/chat.py → VendorChatAssistant._get_system_prompt (lines 500 and 517)

Root cause:

# chat.py line 500 — CAPABILITIES section (plain language, no tool name)
- Browse, search, and read files stored in FinDrive (the vendor's document storage)

# chat.py line 517 — RULES section (explicit MCP tool name)
- When the user attaches FinDrive files, read them using the findrive__get_file tool
  to understand their content before responding.

CAPABILITIES describes FinDrive access in natural language with no tool name.
RULES then names the specific MCP tool findrive__get_file directly.
The two sections use inconsistent levels of abstraction for the same capability.

This is the opposite pattern from Bug_200(where CAPABILITIES named tools explicitly).
Between the two issues, the Vendor prompt has no consistent convention for when tool
names appear and when they do not.

Steps to reproduce:

  1. Read VendorChatAssistant._get_system_prompt().
  2. Observe line 500: FinDrive described without tool name.
  3. Observe line 517: findrive__get_file named explicitly in RULES.

Proposed fix:

Apply a consistent convention across both sections. Either:

  • Name tools in CAPABILITIES (where they are introduced) and reference them consistently in RULES.
  • Or name tools only in RULES (where they are needed for dispatch) and keep CAPABILITIES in plain language throughout.

The CoPilot prompt uses the second pattern more consistently — CAPABILITIES describes
capabilities in plain language, WORKFLOW GUIDANCE names tools for dispatch.
Align the Vendor prompt to the same convention.

Impact: A developer maintaining the Vendor prompt who adds a new FinDrive capability
has no clear pattern to follow. They might add the tool name to CAPABILITIES (following
line 501's FinMail example) or leave it in plain language (following line 500's FinDrive
example) or put it only in RULES (following line 517). The inconsistency accumulates over
time and makes the prompt harder to audit and test.

Acceptance criteria:

  • CAPABILITIES and RULES sections follow a single consistent convention for tool name usage
  • All existing prompt content tests continue to pass
  • test_chat_prompt_055 (no internal tool name leakage) continues to pass

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions