@@ -549,26 +549,21 @@ def register_tools():
549549 if config .is_tool_enabled ("sharepoint_excel" ):
550550 mcp .tool (
551551 description = (
552- "Read or search Excel files in SharePoint. "
553- "Search mode: use 'query' parameter to find cells containing specific text (returns cell locations and optionally row data). "
554- "Read mode: use 'sheet' and 'cell_range' parameters to retrieve data from specific sections. "
555- "When cell_range is specified with include_frozen_rows=True (default), frozen rows are automatically "
556- "included even if they are outside the specified range. frozen_rows indicates the number of header rows "
557- "frozen at the top of the sheet (typically column headers). "
558- "Response includes cell data in 'rows' (value and coordinate) and structural information "
559- "(sheet name, dimensions, frozen_rows, frozen_cols, freeze_panes when present, merged_ranges when merged cells exist). "
560- "Cell styles (include_cell_styles, default: false): background colors and sizes. Use only for color-coded data extraction. "
561- "Header detection: For sheets with frozen_rows > 0, headers are automatically included with include_frozen_rows=True (default). "
562- "For sheets with frozen_rows=0, headers are not automatically included and context may be unclear. "
563- "ALWAYS read exactly 5 rows for header check: 'A1:Z5' (NOT 'A1:Z50' or more). "
564- "IMPORTANT: include_row_data=True returns matched row data only (not headers), same-row matches duplicate data. "
565- "Always read 'A1:Z5' first for header context. Effective for <200 matches. "
566- "Prefer 'query' search when possible to locate data first. "
567- "Workflow: 1) Read 'A1:Z5' for header check (REQUIRED for understanding column structure), "
568- "2) Search with query (optionally with include_row_data=True to get matched row data), "
569- "3) Read specific range if needed (include_frozen_rows adds frozen headers automatically), "
570- "4) If frozen_rows=0 and header context is unclear, retry with expand_axis_range=True "
571- "to auto-include row 1 (for columns) or column A (for rows)."
552+ "ALWAYS start by reading 'A1:Z5' to understand column structure (required for both modes). "
553+ "Two modes: 1) Search mode (query parameter) finds cells containing text and returns locations with optional row data. "
554+ "2) Read mode (sheet + cell_range) retrieves specific sections. "
555+ "Key parameters: "
556+ "- include_frozen_rows (default: true): Auto-includes frozen header rows even if outside specified range. "
557+ "frozen_rows = header row count "
558+ "- include_cell_styles (default: false): Adds background colors and sizes (20% more tokens) - use for color-coded data only "
559+ "- expand_axis_range (default: false): When frozen_rows=0, auto-expands ranges to include row 1/column A for headers "
560+ "- include_row_data (default: false): Search mode - returns entire matched rows (headers excluded). Best for <200 matches. "
561+ "Recommended workflow: "
562+ "1. Read 'A1:Z5' for headers (NOT 'A1:Z50') - MANDATORY "
563+ "2. Search with query to locate data "
564+ "3. Read specific range if needed (frozen headers auto-included) "
565+ "4. If frozen_rows=0 and context unclear, retry with expand_axis_range=true. "
566+ "Response: rows (value + coordinate), sheet info (dimensions, frozen_rows/cols, freeze_panes/merged_ranges)."
572567 )
573568 )(sharepoint_excel )
574569 logging .info ("Registered tool: sharepoint_excel" )
0 commit comments