Amin Ghadersohi
32234ea0bb
test(mcp): add -> None return types and remove redundant ToolError import
...
All 6 new test methods in TestListDatasetsRequestWrapper were missing
the required -> None return type annotation (Rule 12). Also remove the
inline `from fastmcp.exceptions import ToolError` in test_flat_kwargs_rejected
since ToolError is already imported at module top-level (line 27).
2026-05-07 16:55:35 +00:00
Amin Ghadersohi
a2b0f64176
fix(mcp): use valid opr value in docstring filter examples; fix dashboard docstring test
...
- Replace opr:"ct" with opr:"sw" in filter examples in list_datasets,
list_charts, and list_dashboards docstrings — "ct" is not a valid
ColumnOperatorEnum value, so examples using it produce validation errors
- Fix TestDashboardSortableColumns.test_sortable_columns_in_docstring:
assertion checked for "Sortable columns for order_column:" (plain text)
but docstring uses RST backtick format; split into two substring checks
matching "Sortable columns for" and "order_column" separately
2026-05-07 16:55:35 +00:00
Amin Ghadersohi
4d66dc0774
test(mcp): fix and strengthen TestListDatasetsRequestWrapper tests
...
- Fix test_sortable_columns_in_docstring: assertion used plain-text match
but docstring now uses RST backtick format; use substring check for both
'Sortable columns for' and 'order_column' separately
- Fix test_dataset_filter_valid_col: opr='ct' is not a valid
ColumnOperatorEnum value; use opr='sw' (starts-with) instead
- Add test_request_wrapper_enforced_by_tool: exercises the wrapper pattern
through the actual FastMCP client call (not just schema instantiation),
verifying the MCP tool layer accepts request={...} correctly
- Strengthen test_flat_kwargs_rejected: assert that the ToolError message
references the unexpected arguments ('search', 'Unexpected', or 'request')
so the test cannot pass on unrelated failures
2026-05-07 16:55:35 +00:00
Amin Ghadersohi
5542a2f3b1
fix(mcp): clarify request wrapper pattern in list_datasets, list_charts, list_dashboards
...
LLMs consistently passed flat kwargs (search, page, page_size) to list_*
tools instead of wrapping them in the required `request` object, causing
pydantic validation errors.
- Add docstring usage examples to list_datasets, list_charts, and
list_dashboards showing the correct `request={...}` call shape and
explicitly warning against flat kwargs
- Enumerate valid filter columns directly in DatasetFilter, ChartFilter,
and DashboardFilter field descriptions (e.g. `created_by_fk` is not a
valid dataset filter col)
- Add TestListDatasetsRequestWrapper tests covering: correct request
wrapper usage, default values, valid/invalid filter col validation,
and the flat-kwargs rejection scenario from story #105712
- Allow E501 in list_*.py tool files (docstring examples need full request
shapes to be instructive)
2026-05-07 16:55:35 +00:00
Amin Ghadersohi
9b520312a1
fix(mcp): use tiktoken for response-size-guard token estimation ( #39912 )
2026-05-07 11:51:31 -04:00
Amin Ghadersohi
9ac4711ac8
fix(mcp): prevent DetachedInstanceError in get_chart_preview ( #39921 )
2026-05-07 11:44:11 -04:00
Enzo Martellucci
b5186d1c65
fix(reports): keep body sized so standalone screenshots don't time out ( #39944 )
2026-05-07 12:26:50 +02:00
bdonovan1
5b5dd01028
fix(sqla): parenthesize calculated column expressions in WHERE clause ( #39793 )
...
Co-authored-by: Brian Donovan <briand@netflix.com >
Co-authored-by: Vitor Avila <96086495+Vitor-Avila@users.noreply.github.com >
2026-05-06 19:45:27 -03:00
Enzo Martellucci
9aaa12c7d4
fix(reports): preserve urlParams in multi-tab report fan-out ( #39884 )
2026-05-06 16:29:45 +02:00
Alexandru Soare
adfbbf1433
fix(sql): quote identifiers in transpile_to_dialect to fix case-sensitive column filters ( #39521 )
2026-05-06 10:53:09 +03:00
Vitor Avila
3745e37182
fix(OAuth2): Support OAuth2 exception with legacy endpoint ( #39897 )
2026-05-05 21:21:48 -03:00
Amin Ghadersohi
4a21a5365f
fix(mcp): validate column refs in generate_explore_link, update_chart_preview, and update_chart ( #39797 )
2026-05-05 19:12:31 -04:00
Richard Fogaca Nienkotter
9459bc7bf4
fix(mcp): warn on invalid chart preview form data key ( #39891 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-05-05 16:40:00 -03:00
Beto Dealmeida
cb53745d43
feat: semantic layer extension ( #37815 )
2026-05-05 12:07:46 -04:00
Beto Dealmeida
5325b87e73
fix(clickhouse): prevent expensive table scan ( #39867 )
2026-05-04 19:39:10 -04:00
Sam Firke
c2725e86f3
fix(markdown): Allow "target" attribute ( #39868 )
2026-05-04 18:27:43 -04:00
Amin Ghadersohi
673634f7af
fix(mcp): point get_dataset_info url to explore view instead of legacy tablemodelview edit ( #39838 )
2026-05-04 13:39:05 -04:00
Amin Ghadersohi
28239c18d4
feat(mcp): warn when execute_sql template_params used with templating disabled ( #39858 )
2026-05-04 12:14:44 -04:00
jesperct
d8dd2d99b3
fix(time-comparison): use chart row_limit instead of instance config in offset queries ( #39490 )
2026-05-01 16:24:59 -07:00
Elizabeth Thompson
98eaaaa6d6
fix(mcp): clear stale thread-local DB session in sync tool wrapper ( #39798 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-01 09:24:48 -07:00
Amin Ghadersohi
957b298ae1
fix(mcp): add default request parameter to list_charts and list_dashboards ( #39730 )
2026-04-30 18:04:39 -04:00
Amin Ghadersohi
f29d82b3b1
feat(mcp): add query_dataset tool to query datasets using semantic layer ( #39727 )
2026-04-30 18:03:41 -04:00
Vitor Avila
3f550f166f
fix(GSheets OAuth2): Re-add UnauthenticatedError ( #39785 )
2026-04-30 18:57:00 -03:00
Vitor Avila
86eb6176d1
fix: Enforce per-user caching on legacy API endpoint ( #39789 )
2026-04-30 18:04:33 -03:00
Luiz Otavio
df396aa6e9
fix(drill-to-detail): drill to detail by correctly filtering by metric ( #39766 )
...
Co-authored-by: Michael S. Molina <michael.s.molina@gmail.com >
2026-04-30 08:40:16 -03:00
Enzo Martellucci
e4fe08ab9e
feat(mcp): add generate_bug_report tool with PII sanitization ( #39595 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-30 12:47:14 +02:00
Richard Fogaca Nienkotter
c2b9272f4c
fix(mcp): sanitize read path output for LLM context ( #39738 )
2026-04-29 19:06:19 -03:00
Enzo Martellucci
e3e834bbf7
fix(mcp): fall back to title match when dashboard slug lookup misses ( #39567 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-29 23:03:16 +02:00
Elizabeth Thompson
8d17c34068
feat(mcp): restore self-lookup via created_by_me flag ( #39638 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-29 11:03:28 -07:00
Richard Fogaca Nienkotter
549aff7cf9
fix(mcp): clarify chart preview URL metadata ( #39731 )
2026-04-29 12:37:40 -03:00
Daniel Vaz Gaspar
c7c9a17d6b
fix(mysql): fallback to pymysql when MySQLdb is not installed in get_datatype() ( #39729 )
...
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-29 14:40:39 +01:00
Amin Ghadersohi
4b42f82f13
fix(mcp): restore typed ChartConfig in tool schemas for LLM visibility ( #39732 )
2026-04-28 19:46:57 -04:00
Richard Fogaca Nienkotter
d0abb66fdf
fix(mcp): default chart previews to ascii ( #39719 )
2026-04-28 13:30:39 -03:00
Amin Ghadersohi
6947881ba7
fix(mcp): classify user errors as WARNING, system errors as ERROR ( #39634 )
...
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-28 08:55:17 -04:00
Mehmet Salih Yavuz
3f28f5d012
fix(mcp): surface structured errors for generate_chart validation failures ( #39484 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-28 11:13:53 +03:00
Amin Ghadersohi
7774ec7e3c
fix(mcp): database filter columns, timeseries SQL, and unsaved chart datasource name ( #39636 )
2026-04-27 13:41:06 -04:00
Evan Rusackas
2026a1de6a
fix(i18n): Fix menu bar translations not updating on language change ( #34565 )
...
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
Co-authored-by: Claude <claude@anthropic.com >
2026-04-24 22:49:03 -07:00
Amin Ghadersohi
ad20285dd6
fix(mcp): sanitize chart config errors and accept field name aliases ( #39606 )
2026-04-24 21:30:43 -04:00
Richard Fogaca Nienkotter
57e563b177
fix(mcp): redact dashboard data model metadata ( #39632 )
2026-04-24 17:37:15 -03:00
Beto Dealmeida
edf4d03218
chore: bump rison to 2.0.0 ( #39529 )
2026-04-24 15:52:42 -04:00
Enzo Martellucci
d7941ccfec
fix(mcp): surface XSS sanitization in chart/dashboard names instead of silently stripping ( #39491 )
2026-04-24 14:59:20 +02:00
Richard Fogaca Nienkotter
d79eb5842a
fix(mcp): protect data-model metadata from dashboard viewers ( #39599 )
...
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 09:40:39 -03:00
Luiz Otavio
970b5bcf75
fix(cross-filter): correctly cast adhoc column types when cross filtering ( #39577 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 08:26:46 -03:00
Amin Ghadersohi
7c4f87615b
fix(mcp): correct method name in API key auth (extract_api_key_from_request) ( #39437 )
2026-04-23 23:33:23 -04:00
Elizabeth Thompson
f0d521dfc2
fix(reports): poll for spinner absence instead of snapshotting loading elements ( #39579 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 22:03:43 -03:00
Amin Ghadersohi
012bf52c8c
fix(mcp): resolve $ref by inlining definitions in compact schema ( #39562 )
2026-04-23 17:58:06 -04:00
Richard Fogaca Nienkotter
0d50fd676b
fix(mcp): hide user directory metadata from responses ( #39576 )
...
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com >
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 17:35:08 -03:00
Enzo Martellucci
dae79a6cba
fix(mcp): surface validation errors in generate_chart instead of empty response ( #39522 )
...
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-23 21:50:02 +02:00
Michael S. Molina
362e5bf45e
fix(jinja): drill-to-detail respects remove_filter=True in Jinja templates ( #39594 )
...
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 16:11:13 -03:00
Amin Ghadersohi
b1b6a057d8
fix(mcp): unwrap ToolResult payload before truncation in ResponseSizeGuardMiddleware ( #39578 )
...
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com >
2026-04-23 12:35:13 -04:00