Skip to main content
Glama

Get Signals Since

get_signals_since
Read-only

[MONITORING] Polling alternative to the /stream WebSocket. Walks the signal stream in emission order (timestamp, id) from a cursor: pass since_timestamp (unix epoch seconds) and, to resume exactly, the since_id from the previous call's cursor_id (or parse next_cursor = 'timestamp:id'). Returns every signal emitted after the cursor — including ones that have since expired (see status) — up to limit (1-100, default 100), oldest first, with has_more. Keep calling while has_more is true. Free tier sees the standard delay; nothing is skipped, it arrives once the delay elapses. server_timestamp is still returned but is NOT a safe cursor (it moved past signals the page could not hold) — use next_cursor / cursor_timestamp + cursor_id.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
assetNo
limitNo
since_idNo
signal_typeNo
since_timestampYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYes
signalsYes
next_cursorNo
market_opensNo
server_timestampNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / limit
      Added value: +{
      +  "default": 100,
      +  "title": "Limit",
      +  "type": "integer"
      +}
    • addedInput schema / properties / since_id
      Added value: +{
      +  "default": 0,
      +  "title": "Since Id",
      +  "type": "integer"
      +}
  2. Changed11 schema fields changed
    • addedOutput schema / $defs / SignalOut / properties / confidence_revised_by_corroboration
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Confidence Revised By Corroboration"
      +}
    • addedOutput schema / $defs / SignalOut / properties / confidence_status
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Confidence Status"
      +}
    • addedOutput schema / $defs / SignalOut / properties / confidence_suppressed_reason
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Confidence Suppressed Reason"
      +}
    • addedOutput schema / $defs / SignalOut / properties / model_transform
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Model Transform"
      +}
    • addedOutput schema / $defs / SignalOut / properties / observed_behavior
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Observed Behavior"
      +}
    • addedOutput schema / $defs / SignalOut / properties / observed_direction
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Observed Direction"
      +}
    • addedOutput schema / $defs / SignalOut / properties / observed_entity
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Observed Entity"
      +}
    • addedOutput schema / $defs / SignalOut / properties / predicted_direction
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Predicted Direction"
      +}
    • addedOutput schema / $defs / SignalOut / properties / transform_basis
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Transform Basis"
      +}
    • addedOutput schema / $defs / SignalOut / properties / transform_sample_n
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Transform Sample N"
      +}
    • addedOutput schema / $defs / SignalOut / properties / transform_validation_status
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Transform Validation Status"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / signal_type
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Signal Type"
      +}
  4. Changed1 schema field changed
    • removedOutput schema / $defs / SignalOut / properties / signal_type / enum
      Removed value: -[
      -  "regulatory",
      -  "whale",
      -  "whale_position",
      -  "sentiment",
      -  "price",
      -  "hack",
      -  "listing",
      -  "unlock",
      -  "macro",
      -  "macro_flow",
      -  "macro_pulse",
      -  "liquidation",
      -  "funding",
      -  "research",
      -  "deleverage",
      -  "options_flow",
      -  "dex_flow",
      -  "other"
      -]
  5. Changed1 schema field changed
    • changedOutput schema / $defs / SignalOut / properties / signal_type / enum
      Previous value: -[
      -  "regulatory",
      -  "whale",
      -  "whale_position",
      -  "sentiment",
      -  "price",
      -  "hack",
      -  "listing",
      -  "unlock",
      -  "macro",
      -  "macro_flow",
      -  "macro_pulse",
      -  "liquidation",
      -  "funding",
      -  "research",
      -  "deleverage",
      -  "options_flow",
      -  "other"
      -]New value: +[
      +  "regulatory",
      +  "whale",
      +  "whale_position",
      +  "sentiment",
      +  "price",
      +  "hack",
      +  "listing",
      +  "unlock",
      +  "macro",
      +  "macro_flow",
      +  "macro_pulse",
      +  "liquidation",
      +  "funding",
      +  "research",
      +  "deleverage",
      +  "options_flow",
      +  "dex_flow",
      +  "other"
      +]
  6. Changed1 schema field changed
    • changedOutput schema / $defs / SignalOut / properties / signal_type / enum
      Previous value: -[
      -  "regulatory",
      -  "whale",
      -  "whale_position",
      -  "sentiment",
      -  "price",
      -  "hack",
      -  "listing",
      -  "unlock",
      -  "macro",
      -  "macro_flow",
      -  "macro_pulse",
      -  "liquidation",
      -  "funding",
      -  "research",
      -  "deleverage",
      -  "other"
      -]New value: +[
      +  "regulatory",
      +  "whale",
      +  "whale_position",
      +  "sentiment",
      +  "price",
      +  "hack",
      +  "listing",
      +  "unlock",
      +  "macro",
      +  "macro_flow",
      +  "macro_pulse",
      +  "liquidation",
      +  "funding",
      +  "research",
      +  "deleverage",
      +  "options_flow",
      +  "other"
      +]
  7. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations provide readOnlyHint=true and openWorldHint=false, but the description goes far beyond that. It discloses that signals may have expired (status), that nothing is skipped even on the free tier, that there is a standard delay, that the cursor is a compound of timestamp and id, and that server_timestamp is unsafe as a cursor. This is rich behavioral context not captured by annotations.

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?

The description is dense but every sentence adds value: it opens with the purpose, then details cursor usage, pagination, delay, and a warning. It is front-loaded with the 'Polling alternative' tag and the core function. While it is longer than average, the technical complexity justifies the length; it is not padded.

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

Completeness5/5

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

For a tool with cursor-based pagination, ordering, expiry, delay, and safe-cursor semantics, the description covers all critical aspects. It explains the ordering (oldest first), the has_more flag, the limit range, the delay behavior, and the unsafe cursor warning. It even notes that expired signals are included and references the status field. With an output schema present, the description is effectively complete for correct invocation.

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

Parameters4/5

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

The input schema has 0% description coverage, so the description must carry the burden. It explains since_timestamp (unix epoch seconds), since_id (from previous call's cursor_id), limit (1-100, default 100), and the next_cursor format. It does not explain asset or signal_type, which are optional filters, but the core cursor mechanics are well-covered. This is a strong compensation for the schema gap.

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

Purpose5/5

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

The description states a specific purpose: it is a polling alternative to the /stream WebSocket that walks the signal stream in emission order from a cursor. It clearly differentiates itself from the many sibling get_* tools by focusing on cursor-based retrieval of signals since a timestamp, and even notes it returns expired signals. This is a precise verb+resource definition.

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?

The description gives explicit usage instructions: how to set the cursor (since_timestamp and since_id), how to paginate (keep calling while has_more), and warns against using server_timestamp as a cursor. It implies it is for polling scenarios versus streaming, but does not explicitly name alternatives like list_signals or get_signal. Still, the usage context is clear and actionable.

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.

Resources