Skip to main content
Glama

HubVibe: Pay-per-Call Agent Tools: Web Search, Email Verify, KYC Screening, Stocks, Crypto, News

Detect anomalies in a time series

hubvibe_data_anomalies
Read-onlyIdempotent

Anomaly detection on a time series: score recent periods against history with BigQuery AI.DETECT_ANOMALIES (TimesFM). Give one table and its latest periods are scored against its own history, or a history and a target table. Returns every checked row with bounds, anomaly flag and probability, plus the anomaly count. Input: history_table, target_table, timestamp_col, data_col; optional target_last, threshold, id_cols. $10.00 per call. Returns: history_table, target_table, timestamp_col, data_col, anomaly_prob_threshold, mode, target_periods, columns[], rows[], row_count, anomaly_count, gib_processed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
id_colsNoOptional: one series per value of these columns.
data_colYes
languageNoOptional BCP-47 language tag (en, ja, ko, pt-BR): the human-readable strings of the result (notes, details, reasons) are translated into this language; data, codes, numbers and URLs are untouched. Default: as produced.
target_lastNoSame table as history and target: score its latest N timestamps. Default 30.
max_scan_gibNo
target_tableYesproject.dataset.table
history_tableYesproject.dataset.table
timestamp_colYes
anomaly_prob_thresholdNo0.5-0.999, default 0.95.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
statusYes
workerYes
price_usdYes
provenanceYes
receipt_idYes
attributionNo
receipt_urlYes
billing_warningNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed23 schema fields changed
    • removedOutput schema / description
      Removed value: -"The 200 body of every paid /work call. `result` is the worker's own output (its schema is per route); everything else is the same on every /work route. A receipt for the job is at `receipt_url`."
    • removedOutput schema / properties / attribution / description
      Removed value: -"Present only when the result's text was machine-translated: the credit to show with it."
    • removedOutput schema / properties / attribution / items / description
      Removed value: -"A credit."
    • removedOutput schema / properties / attribution / items / properties
      Removed value: -{
      -  "text": {
      -    "description": "Credit.",
      -    "examples": [
      -      "Translated by Google"
      -    ],
      -    "type": "string"
      -  },
      -  "url": {
      -    "description": "Link.",
      -    "examples": [
      -      "https://translate.google.com"
      -    ],
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / attribution / items / required
      Removed value: -[
      -  "text",
      -  "url"
      -]
    • removedOutput schema / properties / attribution / items / type
      Removed value: -"object"
    • removedOutput schema / properties / billing_warning / description
      Removed value: -"Present only when the charge was recorded with a caveat."
    • removedOutput schema / properties / billing_warning / examples
      Removed value: -[
      -  "settlement pending"
      -]
    • removedOutput schema / properties / price_usd / description
      Removed value: -"What this call cost, in USD."
    • removedOutput schema / properties / price_usd / examples
      Removed value: -[
      -  0.02
      -]
    • removedOutput schema / properties / provenance / description
      Removed value: -"How the result was produced: which providers ran and how long each took."
    • removedOutput schema / properties / provenance / properties
      Removed value: -{
      -  "attempts": {
      -    "description": "Provider attempts made, including retries and failovers.",
      -    "examples": [
      -      1
      -    ],
      -    "type": "integer"
      -  },
      -  "elapsed_ms": {
      -    "description": "Wall-clock milliseconds for the whole job.",
      -    "examples": [
      -      340
      -    ],
      -    "type": "integer"
      -  },
      -  "providers_used": {
      -    "description": "Providers that served the job.",
      -    "examples": [
      -      [
      -        "coinbase-advanced-trade-public"
      -      ]
      -    ],
      -    "items": {
      -      "description": "Provider name.",
      -      "examples": [
      -        "coinbase-advanced-trade-public"
      -      ],
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "steps": {
      -    "description": "Every step the job ran, in order.",
      -    "items": {
      -      "description": "One step of the job.",
      -      "properties": {
      -        "ms": {
      -          "description": "Milliseconds the step took.",
      -          "examples": [
      -            312
      -          ],
      -          "type": "integer"
      -        },
      -        "ok": {
      -          "description": "Whether the step succeeded.",
      -          "examples": [
      -            true
      -          ],
      -          "type": "boolean"
      -        },
      -        "provider": {
      -          "description": "Provider that served the step.",
      -          "examples": [
      -            "coinbase-advanced-trade-public"
      -          ],
      -          "type": "string"
      -        },
      -        "reason": {
      -          "description": "Failure reason, on a failed step.",
      -          "examples": [
      -            "provider_timeout"
      -          ],
      -          "type": "string"
      -        },
      -        "step": {
      -          "description": "Step name inside the worker.",
      -          "examples": [
      -            "quote"
      -          ],
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "step",
      -        "ok",
      -        "ms"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  }
      -}
    • removedOutput schema / properties / provenance / required
      Removed value: -[
      -  "steps",
      -  "providers_used",
      -  "attempts",
      -  "elapsed_ms"
      -]
    • removedOutput schema / properties / receipt_id / description
      Removed value: -"Receipt id for this job."
    • removedOutput schema / properties / receipt_id / examples
      Removed value: -[
      -  "rcpt_9f1c2b3a4d5e6f70"
      -]
    • removedOutput schema / properties / receipt_url / description
      Removed value: -"Where to fetch the machine-readable receipt (free, no payment)."
    • removedOutput schema / properties / receipt_url / examples
      Removed value: -[
      -  "/work/receipts/rcpt_9f1c2b3a4d5e6f70"
      -]
    • removedOutput schema / properties / result / properties
      Removed value: -{
      -  "anomaly_count": {
      -    "description": "Rows flagged as anomalies at the threshold.",
      -    "examples": [
      -      2
      -    ],
      -    "type": "integer"
      -  },
      -  "anomaly_prob_threshold": {
      -    "description": "Probability threshold used.",
      -    "examples": [
      -      0.95
      -    ],
      -    "type": "number"
      -  },
      -  "columns": {
      -    "description": "AI.DETECT_ANOMALIES output columns.",
      -    "examples": [
      -      [
      -        "state_name",
      -        "date",
      -        "confirmed_cases",
      -        "is_anomaly",
      -        "lower_bound",
      -        "upper_bound",
      -        "anomaly_probability"
      -      ]
      -    ],
      -    "items": {
      -      "description": "AI.DETECT_ANOMALIES output column.",
      -      "examples": [
      -        "is_anomaly"
      -      ],
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "data_col": {
      -    "description": "Value column.",
      -    "examples": [
      -      "confirmed_cases"
      -    ],
      -    "type": "string"
      -  },
      -  "gib_processed": {
      -    "description": "Gibibytes BigQuery scanned; the metered cost basis.",
      -    "examples": [
      -      0.012
      -    ],
      -    "type": "number"
      -  },
      -  "history_table": {
      -    "description": "Table the forecast is fitted on.",
      -    "examples": [
      -      "bigquery-public-data.covid19_nyt.us_states"
      -    ],
      -    "type": "string"
      -  },
      -  "mode": {
      -    "description": "split_by_time: one table, its latest periods scored against the rest; two_tables: target scored against history.",
      -    "enum": [
      -      "split_by_time",
      -      "two_tables"
      -    ],
      -    "examples": [
      -      "split_by_time"
      -    ],
      -    "type": "string"
      -  },
      -  "row_count": {
      -    "description": "Rows returned.",
      -    "examples": [
      -      10
      -    ],
      -    "type": "integer"
      -  },
      -  "rows": {
      -    "description": "Checked rows with their anomaly flag.",
      -    "examples": [
      -      [
      -        {
      -          "anomaly_probability": "0.12",
      -          "confirmed_cases": "8631000",
      -          "date": "2023-03-20",
      -          "is_anomaly": "false",
      -          "state_name": "Texas"
      -        }
      -      ]
      -    ],
      -    "items": {
      -      "additionalProperties": true,
      -      "description": "One checked point.",
      -      "examples": [
      -        {
      -          "anomaly_probability": "0.12",
      -          "confirmed_cases": "8631000",
      -          "date": "2023-03-20",
      -          "is_anomaly": "false",
      -          "state_name": "Texas"
      -        }
      -      ],
      -      "properties": {},
      -      "required": [],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "target_periods": {
      -    "description": "Latest timestamps scored in split_by_time mode; null for two tables.",
      -    "examples": [
      -      30
      -    ],
      -    "type": [
      -      "integer",
      -      "null"
      -    ]
      -  },
      -  "target_table": {
      -    "description": "Table checked for anomalies.",
      -    "examples": [
      -      "bigquery-public-data.covid19_nyt.us_states"
      -    ],
      -    "type": "string"
      -  },
      -  "timestamp_col": {
      -    "description": "Timestamp column.",
      -    "examples": [
      -      "date"
      -    ],
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / result / required
      Removed value: -[
      -  "history_table",
      -  "target_table",
      -  "timestamp_col",
      -  "data_col",
      -  "anomaly_prob_threshold",
      -  "mode",
      -  "target_periods",
      -  "columns",
      -  "rows",
      -  "row_count",
      -  "anomaly_count",
      -  "gib_processed"
      -]
    • removedOutput schema / properties / status / description
      Removed value: -"Present only on a delivered result."
    • removedOutput schema / properties / worker / description
      Removed value: -"Catalog name of the worker that ran."
    • removedOutput schema / properties / worker / examples
      Removed value: -[
      -  "market.quote"
      -]
    • removedOutput schema / title
      Removed value: -"data.anomalies response"
  2. Changed1 schema field changed
    • addedOutput schema / properties / attribution
      Added value: +{
      +  "description": "Present only when the result's text was machine-translated: the credit to show with it.",
      +  "items": {
      +    "description": "A credit.",
      +    "properties": {
      +      "text": {
      +        "description": "Credit.",
      +        "examples": [
      +          "Translated by Google"
      +        ],
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Link.",
      +        "examples": [
      +          "https://translate.google.com"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "text",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  3. Changed5 schema fields changed
    • addedInput schema / properties / target_last
      Added value: +{
      +  "description": "Same table as history and target: score its latest N timestamps. Default 30.",
      +  "maximum": 366,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / result / properties / anomaly_count
      Added value: +{
      +  "description": "Rows flagged as anomalies at the threshold.",
      +  "examples": [
      +    2
      +  ],
      +  "type": "integer"
      +}
    • addedOutput schema / properties / result / properties / mode
      Added value: +{
      +  "description": "split_by_time: one table, its latest periods scored against the rest; two_tables: target scored against history.",
      +  "enum": [
      +    "split_by_time",
      +    "two_tables"
      +  ],
      +  "examples": [
      +    "split_by_time"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / result / properties / target_periods
      Added value: +{
      +  "description": "Latest timestamps scored in split_by_time mode; null for two tables.",
      +  "examples": [
      +    30
      +  ],
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / result / required
      Previous value: -[
      -  "history_table",
      -  "target_table",
      -  "timestamp_col",
      -  "data_col",
      -  "anomaly_prob_threshold",
      -  "columns",
      -  "rows",
      -  "row_count",
      -  "gib_processed"
      -]New value: +[
      +  "history_table",
      +  "target_table",
      +  "timestamp_col",
      +  "data_col",
      +  "anomaly_prob_threshold",
      +  "mode",
      +  "target_periods",
      +  "columns",
      +  "rows",
      +  "row_count",
      +  "anomaly_count",
      +  "gib_processed"
      +]
  4. Changed1 schema field changed
    • addedInput schema / properties / language
      Added value: +{
      +  "description": "Optional BCP-47 language tag (en, ja, ko, pt-BR): the human-readable strings of the result (notes, details, reasons) are translated into this language; data, codes, numbers and URLs are untouched. Default: as produced.",
      +  "maxLength": 35,
      +  "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$",
      +  "type": "string"
      +}
  5. Changed1 schema field changed
    • changedOutput schema / description
      Previous value: -"The 200 body of every paid /work call. `result` is the worker's own output (its schema is per route); everything else is the same on all 38 routes. A receipt for the job is at `receipt_url`."New value: +"The 200 body of every paid /work call. `result` is the worker's own output (its schema is per route); everything else is the same on every /work route. A receipt for the job is at `receipt_url`."
  6. Added

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld). The description adds genuinely useful non-annotation context: per-call pricing ($10.00), the row-level output shape (bounds, flag, probability) and the anomaly count, including a gib_processed cost signal. It omits auth/permission requirements that a BigQuery-backed tool likely needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and mechanism, then modes, then I/O. It is dense and mostly earns its space, but the trailing 'Returns: ...' inventory duplicates the output schema field-by-field and is largely redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the return-value restatement is unnecessary; the description's real value is the mode semantics and the cost signal. Given a 9-parameter tool with 67% schema coverage, it covers the call pattern adequately but leaves max_scan_gib and the required-vs-optional boundary partly to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%, so the schema already documents several parameters (target_last, anomaly_prob_threshold, language, id_cols). The description largely restates parameter names and the two mode-setting parameters, adding modest value such as the single-table-vs-history+target semantics. Two parameters (max_scan_gib, data_col) remain undocumented in either place.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('anomaly detection on a time series') and names the underlying mechanism (BigQuery AI.DETECT_ANOMALIES / TimesFM), which is unusually concrete. It does not differentiate itself from the closest sibling, hubvibe_data_forecast, so an agent must infer that distinction from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the two operating modes clearly: one table whose latest periods are scored against its own history (via target_last), or a separate history and target table. This tells the agent how to configure a call, but gives no explicit when-not or alternative-tool guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.