query_dataset
Retrieve specific data from Australian Bureau of Statistics (ABS) datasets using customizable filters to meet analytical needs.
Instructions
Query a specific ABS dataset with optional filters
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| datasetId | Yes | ID of the dataset to query (e.g., C21_G01_LGA) |
Implementation Reference
- src/index.ts:50-82 (handler)The main handler for tool calls, which specifically implements the logic for 'query_dataset' by validating input, constructing the ABS API URL, fetching the data with axios, and returning the JSON response.server.setRequestHandler(CallToolRequestSchema, async (request) => { try { const { name, arguments: args } = request.params; if (name !== "query_dataset") { throw new Error(`Unknown tool: ${name}`); } if (!args?.datasetId || typeof args.datasetId !== "string") { throw new Error("datasetId is required and must be a string"); } const url = `${ABS_API_BASE}/data/${args.datasetId}/all?format=json&dimensionAtObservation=AllDimensions`; try { const response = await axios.get(url); return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }] }; } catch (error) { if (error instanceof AxiosError && error.response) { throw new Error(`ABS API Error: ${error.response.status} - ${JSON.stringify(error.response.data)}`); } throw error; } } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); throw new Error(`Error querying dataset: ${errorMessage}`); } });
- src/index.ts:29-48 (registration)Registers the 'query_dataset' tool by defining its name, description, and input schema in the list tools response.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: "query_dataset", description: "Query a specific ABS dataset with optional filters", inputSchema: { type: "object", required: ["datasetId"], properties: { datasetId: { type: "string", description: "ID of the dataset to query (e.g., C21_G01_LGA)" } } } } ] }; });
- src/index.ts:35-44 (schema)Defines the input schema for the query_dataset tool, requiring a 'datasetId' string.inputSchema: { type: "object", required: ["datasetId"], properties: { datasetId: { type: "string", description: "ID of the dataset to query (e.g., C21_G01_LGA)" } } }