StatCanAPI_Server
Registry code: 53c87d383bd4b332
Access Statistics Canada data via the Web Data Services API
from a public catalogue that lists it, not from the operator
- endpoint
- https://mcp-statcan.com/mcp
- protocol
- http-sse ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is StatCanAPI_Server live?
- Yes — it answered the hub's last check (checked 2h ago). It answered 100% of checks over the last 30 days.
- Is StatCanAPI_Server free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does StatCanAPI_Server have?
- 17 tools: get_changed_series_data_from_vector, get_changed_series_list, get_sdmx_structure, get_sdmx_data, query_sdmx, get_sdmx_vector_data, get_sdmx_key_for_dimension, get_changed_cube_list, ….
- Is StatCanAPI_Server safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 17 tools
- unknown → live
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
get_all_cubes_list open 2h ago
Provides a complete inventory of data tables available via the API, including dimension-level details. Disables SSL Verification. Corresponds to: GET /getAllCubesList Results are paginated. Default returns first 100 cubes. Use offset/limit to page through. Prefer search_cubes_by_title if you know what you're looking for. IMPORTANT: In your final response to the user, you MUST cite the source of your data. For cubes, this means including the ProductId (pid) and the Title.
{ "type": "object", "required": [], "properties": { "limit": { "type": "integer", "title": "Limit", "default": 100, "description": "Max cubes to return. Default 100." }, "offset": { "type": "integer", "title": "Offset", "default": 0, "description": "Number of cubes to skip (for pagination). Default 0." } } }arguments 18 linesget_all_cubes_list_lite open 2h ago
Provides a complete inventory of data tables available via the API, excluding dimension or footnote information (lighter version). Disables SSL Verification. Corresponds to: GET /getAllCubesListLite Results are paginated. Default returns first 100 cubes. Use offset/limit to page through. Prefer search_cubes_by_title if you know what you're looking for. IMPORTANT: In your final response to the user, you MUST cite the source of your data. For cubes, this means including the ProductId (pid) and the Title.
{ "type": "object", "required": [], "properties": { "limit": { "type": "integer", "title": "Limit", "default": 100, "description": "Max cubes to return. Default 100." }, "offset": { "type": "integer", "title": "Offset", "default": 0, "description": "Number of cubes to skip (for pagination). Default 0." } } }arguments 18 linesget_changed_series_data_from_vector unknown never probed
Get changed series data (data points that have changed) for a series identified by Vector ID. Disables SSL Verification. Corresponds to: POST /getChangedSeriesDataFromVector Returns: Dict[str, Any]: A dictionary containing the changed series data object. Raises: httpx.HTTPStatusError: If the API returns an error status code. ValueError: If the API response format is unexpected or status is not SUCCESS. Exception: For other network or unexpected errors. IMPORTANT: In your final response to the user, you MUST cite the source of your data. For changed series data, this means including the VectorId.
{ "type": "object", "required": [ "vectorId" ], "properties": { "vectorId": { "type": "integer", "title": "Vectorid" } } }arguments 12 linesget_changed_series_list unknown never probed
Get the list of series (vectorId, productId, coordinate, releaseTime) that were updated on a specific date (YYYY-MM-DD). Disables SSL Verification. Corresponds to: GET /getChangedSeriesList/{date} Returns: List[Dict[str, Any]]: A list of dictionaries describing changed series objects. Raises: httpx.HTTPStatusError: If the API returns an error status code. ValueError: If date format is invalid or API response format is unexpected. Exception: For other network or unexpected errors. IMPORTANT: In your final response to the user, you MUST cite the source of your data. For changed series, this means including the VectorId.
{ "type": "object", "required": [ "date" ], "properties": { "date": { "type": "string" } } }arguments 11 linesget_sdmx_structure unknown never probed
Fetch the Data Structure Definition (DSD) for a StatCan table via SDMX REST. Returns dimension codelists with code IDs, names, and parent hierarchy. Use this BEFORE get_sdmx_data to understand the key syntax for that table. Each dimension entry includes: - id: dimension identifier (e.g. "Geography") - position: its slot in the dot-separated key string (1-based) - codelist: the SDMX codelist ID (e.g. "CL_Geography") - codes: list of {id, name, ?parent} — truncated to 10 for large codelists - _code_count / _truncated: total size and truncation flag Key construction rules: - "1.2.1" = position-1 code 1, position-2 code 2, position-3 code 1 - ".2.1" = wildcard position 1 (all geographies), Gender=2, Age=1 - "1+2.2.1" = Geography 1 or 2 (OR syntax) - WDS memberIds == SDMX codelist codes — no translation needed IMPORTANT: In your final response to the user, you MUST cite the source of your data. This means including the _sdmx_url.
{ "type": "object", "required": [ "productId" ], "properties": { "productId": { "type": "integer", "title": "Productid" } } }arguments 12 linesget_sdmx_data unknown never probed
Fetch filtered time-series observations from a StatCan table via SDMX REST. Filtering is done server-side — only the requested slice is returned. Call get_sdmx_structure first to see dimension positions and valid codes. Key syntax (dot-separated codes in dimension position order): "1.2.1" = Geography=1 (Canada), Gender=2 (Men+), Age=1 (All ages) ".2.1" = all geographies, Gender=2, Age=1 (wildcard — preferred for multi-geo) "1+2.2.1" = Geography 1 or 2, Gender=2, Age=1 (OR) IMPORTANT — key position codes: - Use member IDs from get_cube_metadata(), NOT SDMX codelist positions from get_sdmx_structure(). Member IDs and SDMX codelist codes are the same numbers. - Wildcard (omit a position) returns EVERY member of that dimension, including totals and parent aggregates — on large dimensions (e.g. 309 NOC occupations) that can exceed the 500-row cap here; use query_sdmx or fetch_sdmx_to_database instead. - To sum or rank across a hierarchy without double-counting totals, use leaf codes: get_sdmx_key_for_dimension(productId, dimension_position) returns them as an OR key. Time filtering (use one or the other, not both): lastNObservations=12 → last 12 periods (e.g. 1 year of monthly data) startPeriod="2020" → from 2020 onwards (annual); "2020-01" for monthly endPeriod="2023-12" → up to Dec 2023 LIMITATION: StatCan rejects combining lastNObservations with startPeriod/endPeriod (returns 406). Output rows contain: dimension values, "period", "value", SCALAR_FACTOR, UOM, VECTOR_ID, STATUS, and other SDMX attributes. Rows are returned inline, capped at MAX_SDMX_ROWS (500). For larger result sets, narrow the key or use startPeriod/endPeriod/lastNObservations. IMPORTANT: In your final response to the user, you MUST cite the source of your data. This means including the _sdmx_url, table information and productId/key in your response.
{ "type": "object", "required": [ "productId", "key" ], "properties": { "key": { "type": "string", "title": "Key", "description": "Dot-separated dimension codes in position order (e.g. '1.2.1'). Use '+' for OR ('1+2.2.1' = Geography 1 or 2). Omit a value for wildcard ('.2.1' = all geographies, Gender=2, Age=1). Code numbers match WDS memberIds — no translation needed. Call get_sdmx_structure first to see dimension positions and valid codes." }, "endPeriod": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Endperiod", "default": null, "description": "End period in YYYY or YYYY-MM format." }, "productId": { "type": "integer", "title": "Productid" }, "startPeriod": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Startperiod", "default": null, "description": "Start period in YYYY or YYYY-MM format." }, "lastNObservations": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Lastnobservations", "default": null, "description": "Return only the last N observations per series (e.g. 12 for one year of monthly data)." } } }arguments 57 linesquery_sdmx unknown never probed
Fetch SDMX observations and run ONE read-only SQL query over them server-side, returning only the query result. Nothing is stored — the data is loaded into a temporary in-memory table named `data` and discarded after the query. *** Use this for compute/compare/rank questions ("which province grew fastest", "average since 2020", "year-over-year change") instead of pulling raw rows with get_sdmx_data and doing arithmetic yourself. It is not limited to 500 rows. *** Same productId, key and time parameters as get_sdmx_data (see that tool for key syntax and wildcard rules). lastNObservations cannot be combined with startPeriod/endPeriod. Table `data` columns: one per dimension (names sanitized: spaces/punctuation → '_'), "period" (TEXT, e.g. "2024" or "2024-03"), "value" (REAL, NULL = suppressed), plus SDMX attributes like VECTOR_ID, UOM, SCALAR_FACTOR, STATUS. Quote mixed-case column names with double quotes. Example — CPI growth by province since Jan 2020: productId=18100004, key="2+3+5+6.2", startPeriod="2020-01", sql: SELECT "Geography", MAX(CASE WHEN period = '2025-12' THEN value END) / MAX(CASE WHEN period = '2020-01' THEN value END) - 1 AS growth FROM data GROUP BY 1 ORDER BY growth DESC If the SQL fails, the response includes `table_columns` — fix the query and retry. Limits: one statement, SELECT only, ~2s execution time, result capped at 500 rows. IMPORTANT: In your final response, cite the _sdmx_url, productId and key used.
{ "type": "object", "required": [ "productId", "key", "sql" ], "properties": { "key": { "type": "string", "title": "Key", "description": "Dot-separated dimension codes in position order (e.g. '1.2.1'). Use '+' for OR ('1+2.2.1' = Geography 1 or 2). Omit a value for wildcard ('.2.1' = all geographies, Gender=2, Age=1). Code numbers match WDS memberIds — no translation needed. Call get_sdmx_structure first to see dimension positions and valid codes." }, "sql": { "type": "string", "title": "Sql", "description": "One read-only SELECT (WITH/CTEs and window functions allowed) against table 'data'. Columns: one per dimension (spaces/punctuation -> '_', e.g. \"Products_and_product_groups\"), period, value (REAL), VECTOR_ID, UOM, SCALAR_FACTOR, STATUS, etc. Quote mixed-case names: SELECT \"Geography\", ..." }, "endPeriod": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Endperiod", "default": null, "description": "End period in YYYY or YYYY-MM format." }, "productId": { "type": "integer", "title": "Productid" }, "startPeriod": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Startperiod", "default": null, "description": "Start period in YYYY or YYYY-MM format." }, "lastNObservations": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Lastnobservations", "default": null, "description": "Return only the last N observations per series (e.g. 12 for one year of monthly data)." } } }arguments 63 linesget_sdmx_vector_data unknown never probed
Fetch time-series observations for a single StatCan vector via SDMX REST. Simpler alternative to get_sdmx_data when you already know the vectorId. Use get_series_info_from_cube_pid_coord or get_cube_metadata to find vectorIds. Time filtering (use one or the other, not both): lastNObservations=5 → last 5 periods startPeriod="2020-01" → from Jan 2020 (monthly); "2020" for annual endPeriod="2023-12" → up to Dec 2023 LIMITATION: StatCan rejects combining lastNObservations with startPeriod/endPeriod (returns 406). Output rows contain: dimension values, "period", "value", SCALAR_FACTOR, UOM, VECTOR_ID, STATUS, and other SDMX attributes. IMPORTANT: In your final response to the user, you MUST cite the source of your data. This means including the _sdmx_url,and vectorId in your response.
{ "type": "object", "required": [ "vectorId" ], "properties": { "vectorId": { "type": "integer", "title": "Vectorid" }, "endPeriod": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Endperiod", "default": null, "description": "End period in YYYY or YYYY-MM format." }, "startPeriod": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Startperiod", "default": null, "description": "Start period in YYYY or YYYY-MM format." }, "lastNObservations": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Lastnobservations", "default": null, "description": "Return only the last N observations (e.g. 5 for last 5 periods)." } } }arguments 51 linesget_sdmx_key_for_dimension unknown never probed
Return all leaf member IDs for a single dimension as a ready-to-use OR key string. Use this before get_sdmx_data when a dimension has many codes (e.g. 162 NOC minor groups, hundreds of CMA geographies). Avoids the need to call get_cube_metadata and manually parse a large JSON response. Leaf codes are codes with no children — the lowest-level members in a hierarchy. For flat (non-hierarchical) codelists every code is a leaf. Example: get_sdmx_key_for_dimension(productId=98100452, dimension_position=6) → { "dimension_id": "Occupation_...", "dimension_name": "Occupation - Minor group - NOC 2021", "position": 6, "leaf_count": 162, "total_count": 309, "or_key": "7+11+12+13+16+18+21+23+...", "note": "Paste or_key at position 6 in your get_sdmx_data key." } Then use the or_key directly: get_sdmx_data(productId=98100452, key="7.3.1.1.1.<or_key>.1", ...)
{ "type": "object", "required": [ "productId", "dimension_position" ], "properties": { "productId": { "type": "integer", "title": "Productid" }, "dimension_position": { "type": "integer", "title": "Dimension Position", "description": "1-based position of the dimension in the SDMX key (use get_sdmx_structure to find positions). E.g. position=6 for the 6th dot-separated slot." } } }arguments 18 linesget_changed_cube_list unknown never probed
Get the list of data tables/cubes that were updated on a specific date (YYYY-MM-DD). Disables SSL Verification. Corresponds to: GET /getChangedCubeList/{date} Returns: List[Dict[str, Any]]: A list of dictionaries describing changed cube objects. IMPORTANT: In your final response to the user, you MUST cite the source of your data. For changed cubes, this means including the ProductId (pid) and Title.
{ "type": "object", "required": [ "date" ], "properties": { "date": { "type": "string" } } }arguments 11 linesget_bulk_vector_data_by_range unknown 2h ago
Fetches bulk data for multiple vectors filtered by *release date* range (YYYY-MM-DDTHH:MM), NOT by reference period. Use this when you want data released within a specific date/time window (e.g., "all updates released yesterday"). *** IMPORTANT: release date vs reference period *** - Use THIS tool when you want: "data released between date A and date B" - Use get_sdmx_vector_data (startPeriod/endPeriod) when you want: "data for the time period YYYY to YYYY" get_sdmx_vector_data is more reliable and filters by reference period, not release date. *** LARGE RESPONSE WARNING *** This tool can return hundreds of flattened data points. If the response exceeds context limits, narrow the request: use fewer vectorIds, or use offset/limit pagination to page through results in smaller chunks. Response is pre-flattened: each element is one data point with vectorId, productId, coordinate, and all value fields injected at the top level. Disables SSL Verification. Corresponds to: POST /getBulkVectorDataByRange Returns: List[Dict[str, Any]]: Flat list of data point dicts, each tagged with vectorId, productId, and coordinate. Raises: httpx.HTTPStatusError: If the API returns an error status code. ValueError: If the API response format is unexpected or no vectors return SUCCESS. Exception: For other network or unexpected errors. IMPORTANT: In your final response to the user, you MUST cite the source of your data. For vector data, this means including the VectorId and Release Time.
{ "type": "object", "required": [ "vectorIds" ], "properties": { "limit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Limit", "default": null, "description": "Max rows to return. Default 50. Set higher to get more rows." }, "offset": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Offset", "default": 0, "description": "Number of rows to skip (for pagination). Default 0." }, "vectorIds": { "type": "array", "items": { "type": "integer" }, "title": "Vectorids", "description": "List of integer vector IDs (e.g. [42076, 41690973])." }, "endDataPointReleaseDate": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Enddatapointreleasedate", "default": null }, "startDataPointReleaseDate": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Startdatapointreleasedate", "default": null } } }arguments 66 linesget_code_sets unknown never probed
Retrieves definitions for various code sets used by the API (e.g., frequency, units of measure). Corresponds to: GET /getCodeSets Returns: Dict[str, Any]: Dictionary containing code set definitions (scalar, frequency, etc.). Raises: httpx.HTTPStatusError: If the API returns an error status code. ValueError: If the API response format is unexpected. Exception: For other network or unexpected errors. IMPORTANT: In your final response to the user, you MUST cite the source of your data. For code sets, this means specifying which code set table or definition is being used.
{ "type": "object", "required": [], "properties": {} }arguments 5 linessearch_cubes_by_title unknown never probed
Searches for data cubes/tables where the English or French title contains the provided search term (case-insensitive). Returns a list of matching cubes in the 'lite' format (excluding dimensions/footnotes). Multiple keywords use AND logic (e.g., "tobacco smoking age" finds cubes containing ALL three words). Results are capped at max_results (default 25). IMPORTANT: In your final response to the user, you MUST cite the source of your data. For cubes, this means including the ProductId (pid) and the Title. Raises: httpx.HTTPStatusError: If the underlying API call fails. Exception: For other network or unexpected errors during the fetch.
{ "type": "object", "required": [ "search_term" ], "properties": { "max_results": { "type": "integer", "title": "Max Results", "default": 25, "description": "Max matching cubes to return. Default 25." }, "search_term": { "type": "string", "title": "Search Term", "description": "Text to search for in cube titles. Multiple keywords use AND logic." } } }arguments 19 linesget_cube_metadata unknown never probed
Retrieves detailed metadata for a specific data table/cube using its ProductId. Includes dimension info, titles, date ranges, codes, etc. Disables SSL Verification. Corresponds to: POST /getCubeMetadata Start with summary=True (default). The summary strips noise (French translations, archive codes, footnotes) and shows only 3 sample members per dimension with _next_steps guidance. Safe for all context window sizes. Set summary=False only if you need the full raw member list or all API fields. To browse dimension codes for get_sdmx_data key construction, use get_sdmx_structure. To resolve a coordinate to a vectorId, use get_series_info. Returns: Dict[str, Any]: The metadata object for the specified cube on success. Raises: httpx.HTTPStatusError: If the API returns an error status code. ValueError: If the API response format is unexpected or status is not SUCCESS. Exception: For other network or unexpected errors. IMPORTANT: In your final response to the user, you MUST cite the source of your data. For cubes, this means including the ProductId (pid) and the Title.
{ "type": "object", "required": [ "productId" ], "properties": { "summary": { "type": "boolean", "title": "Summary", "default": true, "description": "When True (default), returns a compact summary: essential cube metadata, dimension names, 3 sample members per dimension, and _next_steps guidance. Set to False only when you need the full raw member list or all API fields." }, "productId": { "type": "integer", "title": "Productid" } } }arguments 18 linesget_changed_series_data_from_cube_pid_coord unknown never probed
Retrieves changed series data (data points that have changed) using Cube ProductId and Coordinate string. Coordinates are automatically padded to 10 dimensions. Disables SSL Verification. Corresponds to: POST /getChangedSeriesDataFromCubePidCoord Returns: Dict[str, Any]: A dictionary containing the changed series data object. Raises: httpx.HTTPStatusError: If the API returns an error status code. ValueError: If the API response format is unexpected or status is not SUCCESS. Exception: For other network or unexpected errors. IMPORTANT: In your final response to the user, you MUST cite the source of your data. For changed series data, this means including the VectorId, ProductId (pid), and Coordinate.
{ "type": "object", "required": [ "productId", "coordinate" ], "properties": { "productId": { "type": "integer", "title": "Productid" }, "coordinate": { "type": "string", "title": "Coordinate", "description": "Coordinate string (e.g., '1.1'). Padding to 10 dimensions is handled automatically." } } }arguments 18 linesget_series_info unknown never probed
Resolve one or more {productId, coordinate} pairs to series metadata (vectorId, titles, frequency, UOM, etc.) in a single API call. Use this to find vectorIds before fetching data with get_sdmx_data or get_sdmx_vector_data. Pass one item or many — same tool either way. Coordinates are automatically padded to 10 dimensions. Corresponds to: POST /getSeriesInfoFromCubePidCoord (accepts array) NOTE: Response fields like scalarFactorCode, frequencyCode, and memberUomCode use StatCan numeric codes. Call get_code_sets() to decode them (e.g. frequencyCode 6 = "Monthly", scalarFactorCode 0 = "Units"). Returns: List of series metadata dicts, paginated with _guidance if >50 results. Raises: httpx.HTTPStatusError: If the API returns an error status code. ValueError: If no items return SUCCESS. Exception: For other network or unexpected errors. IMPORTANT: In your final response cite the ProductId and Coordinate for each series.
{ "type": "object", "$defs": { "CubeCoordInput": { "type": "object", "title": "CubeCoordInput", "required": [ "productId", "coordinate" ], "properties": { "productId": { "type": "integer", "title": "Productid" }, "coordinate": { "type": "string", "title": "Coordinate", "description": "Coordinate string (e.g., '1.1'). Padding to 10 dimensions is handled automatically." } } } }, "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "$ref": "#/$defs/CubeCoordInput" }, "title": "Items", "description": "List of {productId, coordinate} pairs to fetch series info for in a single batch call." }, "limit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Limit", "default": null, "description": "Max results to return. Default 50." }, "offset": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Offset", "default": 0, "description": "Number of results to skip (for pagination). Default 0." } } }arguments 63 linesget_series_info_from_vector unknown never probed
Request series metadata (productId, coordinate, titles, frequency, etc.) by Vector ID. Disables SSL Verification. Corresponds to: POST /getSeriesInfoFromVector Returns: Dict[str, Any]: A dictionary containing the series metadata object. Raises: httpx.HTTPStatusError: If the API returns an error status code. ValueError: If the API response format is unexpected or status is not SUCCESS. Exception: For other network or unexpected errors. IMPORTANT: In your final response to the user, you MUST cite the source of your data. For series info, this means including the VectorId, ProductId (pid), and Coordinate.
{ "type": "object", "required": [ "vectorId" ], "properties": { "vectorId": { "type": "integer", "title": "Vectorid" } } }arguments 12 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id53c87d383bd4b332.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/53c87d383bd4b332/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/53c87d383bd4b332?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.