Spaces:
Running
Running
Clarify read-only LeRobot search and quality report tools
Browse files
app.py
CHANGED
|
@@ -40,39 +40,39 @@ async def forward(name: str, arguments: dict) -> str:
|
|
| 40 |
|
| 41 |
|
| 42 |
async def list_datasets(query: str | None = None, after: str | None = None, limit: int = 10, format: str | None = None, robot: str | None = None, license: str | None = None, report_kind: str | None = None, min_readiness: float | None = None, min_episodes: int | None = None) -> str:
|
| 43 |
-
"""Read-only:
|
| 44 |
return await forward("list_datasets", locals())
|
| 45 |
|
| 46 |
|
| 47 |
async def search_datasets(q: str | None = None, format: list[str] | None = None, robot: list[str] | None = None, license: list[str] | None = None, report_kind: list[str] | None = None, min_episodes: int | None = None, max_size_gb: float | None = None, min_hours: float | None = None, page: int = 1) -> str:
|
| 48 |
-
"""Read-only:
|
| 49 |
return await forward("search_datasets", locals())
|
| 50 |
|
| 51 |
|
| 52 |
async def get_report(report_id: str | None = None, dataset: str | None = None, report_revision: str | None = None, dataset_revision: str | None = None) -> str:
|
| 53 |
-
"""Read-only:
|
| 54 |
return await forward("get_report", locals())
|
| 55 |
|
| 56 |
|
| 57 |
async def get_findings(report_revision: str, report_id: str | None = None, dataset: str | None = None, dataset_revision: str | None = None, after: int = 0, limit: int = 5) -> str:
|
| 58 |
-
"""Read-only:
|
| 59 |
return await forward("get_findings", locals())
|
| 60 |
|
| 61 |
|
| 62 |
async def search_episodes(q: str | None = None, dataset: str | None = None, task: list[str] | None = None, objects: list[str] | None = None, scene: list[str] | None = None, after: int = 0, limit: int = 20) -> str:
|
| 63 |
-
"""Read-only: Find public episodes by Task family, object names and Scene within one dataset (source_ref, e.g. lerobot/pusht). Supply a nonempty dataset; unscoped calls return search_scope_required. Use search_combined_datasets for broad discovery. Filters AND across fields, OR within a field; q is a word match over the task description and labels. Returns episode rows with labels and review status plus facet counts in datasets. Labels are not grading results: call get_report / get_findings for quality. Never grades, downloads datasets, or publishes. Returns the upstream MCP result envelope as JSON text; upstream errors become tool errors. Use report_id returned by search/list for report lookup."""
|
| 64 |
return await forward("search_episodes", locals())
|
| 65 |
|
| 66 |
|
| 67 |
async def search_combined_datasets(q: str | None = None, dataset: str | None = None, revision: str | None = None, task: list[str] | None = None, objects: list[str] | None = None, scene: list[str] | None = None, format: list[str] | None = None, robot: list[str] | None = None, license: list[str] | None = None, report_kind: list[str] | None = None, min_episodes: int | None = None, max_size_gb: float | None = None, min_hours: float | None = None, page: int = 1, per_page: int = 20, direction: str = "desc", facets: bool = False) -> str:
|
| 68 |
-
"""Read-only:
|
| 69 |
return await forward("search_combined_datasets", locals())
|
| 70 |
|
| 71 |
|
| 72 |
-
with gr.Blocks(title="Kalanos
|
| 73 |
-
gr.Markdown("""# Kalanos Robotics Dataset
|
| 74 |
|
| 75 |
-
Search robotics datasets
|
| 76 |
|
| 77 |
## What you can do
|
| 78 |
|
|
@@ -114,7 +114,14 @@ For reliable report lookup, search or list first and use the returned report_id.
|
|
| 114 |
|
| 115 |
## Available tools
|
| 116 |
|
| 117 |
-
Six read-only tools
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
|
| 119 |
Inspect the [tool schema](/gradio_api/mcp/schema). Anonymous rate limits apply to this shared Space.
|
| 120 |
|
|
|
|
| 40 |
|
| 41 |
|
| 42 |
async def list_datasets(query: str | None = None, after: str | None = None, limit: int = 10, format: str | None = None, robot: str | None = None, license: str | None = None, report_kind: str | None = None, min_readiness: float | None = None, min_episodes: int | None = None) -> str:
|
| 43 |
+
"""Read-only: Browse public LeRobot and robotics datasets already processed by Kalanos Hub alphabetically by slug, 10 per page by default (limit 1–25); never returns the whole catalog. Pass next_after back with the same arguments until it is null. Returns readiness, episode count, robot, format, license and whether Task/Objects/Scene labels exist. Optional literal substring query over slug/source_ref and exact filters (format, robot, license, report_kind, min_readiness, min_episodes). For keyword or relevance search use search_datasets. Never grades, downloads datasets, or publishes. Returns the upstream MCP result envelope as JSON text; upstream errors become tool errors. Use report_id returned by search/list for report lookup."""
|
| 44 |
return await forward("list_datasets", locals())
|
| 45 |
|
| 46 |
|
| 47 |
async def search_datasets(q: str | None = None, format: list[str] | None = None, robot: list[str] | None = None, license: list[str] | None = None, report_kind: list[str] | None = None, min_episodes: int | None = None, max_size_gb: float | None = None, min_hours: float | None = None, page: int = 1) -> str:
|
| 48 |
+
"""Read-only: Search public LeRobot and robotics datasets in Kalanos Hub by relevance: q is matched against the dataset slug, source ref and report summary text (robot names, tasks, formats, descriptions), ranked bm25; without q results are ranked by score. Filters: format[], robot[], license[], report_kind[] (OR within a list, AND across), min_episodes, max_size_gb, min_hours. 25 results per page with total and facet counts; follow page.next_page. Then call get_report with the returned report_id to inspect the existing data quality report. Never grades, downloads datasets, or publishes. Returns the upstream MCP result envelope as JSON text; upstream errors become tool errors. Use report_id returned by search/list for report lookup."""
|
| 49 |
return await forward("search_datasets", locals())
|
| 50 |
|
| 51 |
|
| 52 |
async def get_report(report_id: str | None = None, dataset: str | None = None, report_revision: str | None = None, dataset_revision: str | None = None) -> str:
|
| 53 |
+
"""Read-only: Retrieve the current existing public data quality report for a LeRobot or robotics dataset by report_id or dataset slug (e.g. lerobot/pusht): readiness, decision counts, coverage, attention queue, scores, dataset metadata, immutable report ETag, and Task/Objects/Scene label facets when published. Optional revision checks reject stale data; historical revisions are not retained. Never grades, downloads datasets, or publishes. Returns the upstream MCP result envelope as JSON text; upstream errors become tool errors. Use report_id returned by search/list for report lookup."""
|
| 54 |
return await forward("get_report", locals())
|
| 55 |
|
| 56 |
|
| 57 |
async def get_findings(report_revision: str, report_id: str | None = None, dataset: str | None = None, dataset_revision: str | None = None, after: int = 0, limit: int = 5) -> str:
|
| 58 |
+
"""Read-only: Retrieve recorded episode-level data quality findings and evidence for LeRobot and robotics datasets at an exact report revision, each with its Task/Objects/Scene labels when published. after is an episode offset, including episodes without findings. No episode selection or new evaluation. If output is too large lower limit. Never grades, downloads datasets, or publishes. Returns the upstream MCP result envelope as JSON text; upstream errors become tool errors. Use report_id returned by search/list for report lookup."""
|
| 59 |
return await forward("get_findings", locals())
|
| 60 |
|
| 61 |
|
| 62 |
async def search_episodes(q: str | None = None, dataset: str | None = None, task: list[str] | None = None, objects: list[str] | None = None, scene: list[str] | None = None, after: int = 0, limit: int = 20) -> str:
|
| 63 |
+
"""Read-only: Find public LeRobot and robotics episodes to review by Task family, object names and Scene within one dataset (source_ref, e.g. lerobot/pusht). Supply a nonempty dataset; unscoped calls return search_scope_required. Use search_combined_datasets for broad discovery. Filters AND across fields, OR within a field; q is a word match over the task description and labels. Returns episode rows with labels and review status plus facet counts in datasets. Labels are not grading results: call get_report / get_findings for quality. Never grades, downloads datasets, or publishes. Returns the upstream MCP result envelope as JSON text; upstream errors become tool errors. Use report_id returned by search/list for report lookup."""
|
| 64 |
return await forward("search_episodes", locals())
|
| 65 |
|
| 66 |
|
| 67 |
async def search_combined_datasets(q: str | None = None, dataset: str | None = None, revision: str | None = None, task: list[str] | None = None, objects: list[str] | None = None, scene: list[str] | None = None, format: list[str] | None = None, robot: list[str] | None = None, license: list[str] | None = None, report_kind: list[str] | None = None, min_episodes: int | None = None, max_size_gb: float | None = None, min_hours: float | None = None, page: int = 1, per_page: int = 20, direction: str = "desc", facets: bool = False) -> str:
|
| 68 |
+
"""Read-only: Discover public LeRobot and robotics datasets across Kalanos Hub using task/objects/scene labels together with dataset metadata filters. Returns dataset pages, not globally paginated individual episodes. Set facets=True to request full-result facets/counts; otherwise totals can be null and use page.next_page/has_more. Same-episode AND across episode filters, OR within groups. Without episode facets text may match dataset metadata or labels; with episode facets it must match the same episode. Sort by readiness (null last); direction asc/desc; per_page 20/40/80; page is clamped by the Hub. Use source_ref with scoped search_episodes for episode details. Labels are not quality findings. Never grades or publishes. Returns the upstream result envelope as JSON text."""
|
| 69 |
return await forward("search_combined_datasets", locals())
|
| 70 |
|
| 71 |
|
| 72 |
+
with gr.Blocks(title="Kalanos LeRobot & Robotics Dataset Search MCP") as demo:
|
| 73 |
+
gr.Markdown("""# Kalanos LeRobot & Robotics Dataset Search MCP
|
| 74 |
|
| 75 |
+
Search LeRobot and robotics datasets, inspect existing data quality reports, and find episodes to review in your AI assistant.
|
| 76 |
|
| 77 |
## What you can do
|
| 78 |
|
|
|
|
| 114 |
|
| 115 |
## Available tools
|
| 116 |
|
| 117 |
+
Six read-only tools retrieve existing public data and reports:
|
| 118 |
+
|
| 119 |
+
- list_datasets: browse public LeRobot and robotics datasets already processed by Kalanos, with metadata and report filters.
|
| 120 |
+
- search_datasets: find LeRobot and robotics datasets by keyword, ranked relevance and dataset filters.
|
| 121 |
+
- search_combined_datasets: discover datasets using metadata together with published task, object and scene labels; returns datasets, not a global episode list.
|
| 122 |
+
- get_report: retrieve an existing data quality report with recorded decisions, scores, assessment coverage and limitations. Use the report_id returned by search or list.
|
| 123 |
+
- get_findings: retrieve recorded episode-level quality findings and evidence at the exact report_revision returned by get_report.
|
| 124 |
+
- search_episodes: find episodes to review within one dataset using published task, object and scene labels. Labels are separate from quality findings.
|
| 125 |
|
| 126 |
Inspect the [tool schema](/gradio_api/mcp/schema). Anonymous rate limits apply to this shared Space.
|
| 127 |
|