Skip to main content
Glama

Signal

onelence_get_signal
Read-onlyIdempotent

One signal by id from onelence_list_signals (suppressed ones included): what changed, on which sources, the current and comparison windows with their values, and the relative change. An observation, not a Decision.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "signal_id": "<signal_id>"
    },
    "name": "onelence_get_signal"
  }
}

Input Schema

NameRequiredDescriptionDefault
siteNoSite domain (e.g. example.com) or site id. Defaults to the workspace's newest active site.
signal_idYes

Output Schema

NameRequiredDescriptionDefault
idYes
kindYes
unitYes
groupYes
titleYes
changeYes
metricYes
objectYes
statusYes
currentYes
subjectYes
summaryYes
directionYes
stabilityYes
comparisonYes
source_idsYes
materialityYes
current_windowYes
relative_changeYes
comparison_windowYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "change": {
      +      "properties": {
      +        "currency": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "state": {
      +          "enum": [
      +            "measured",
      +            "missing",
      +            "unavailable",
      +            "not_applicable"
      +          ],
      +          "type": "string"
      +        },
      +        "value": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "state",
      +        "value",
      +        "currency"
      +      ],
      +      "type": "object"
      +    },
      +    "comparison": {
      +      "properties": {
      +        "currency": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "state": {
      +          "enum": [
      +            "measured",
      +            "missing",
      +            "unavailable",
      +            "not_applicable"
      +          ],
      +          "type": "string"
      +        },
      +        "value": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "state",
      +        "value",
      +        "currency"
      +      ],
      +      "type": "object"
      +    },
      +    "comparison_window": {
      +      "anyOf": [
      +        {
      +          "properties": {
      +            "end": {
      +              "type": "string"
      +            },
      +            "start": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "start",
      +            "end"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "current": {
      +      "properties": {
      +        "currency": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "state": {
      +          "enum": [
      +            "measured",
      +            "missing",
      +            "unavailable",
      +            "not_applicable"
      +          ],
      +          "type": "string"
      +        },
      +        "value": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "state",
      +        "value",
      +        "currency"
      +      ],
      +      "type": "object"
      +    },
      +    "current_window": {
      +      "properties": {
      +        "end": {
      +          "type": "string"
      +        },
      +        "start": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "start",
      +        "end"
      +      ],
      +      "type": "object"
      +    },
      +    "direction": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "group": {
      +      "enum": [
      +        "active",
      +        "recent"
      +      ],
      +      "type": "string"
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "kind": {
      +      "const": "observation",
      +      "type": "string"
      +    },
      +    "materiality": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "metric": {
      +      "type": "string"
      +    },
      +    "object": {
      +      "const": "signal",
      +      "type": "string"
      +    },
      +    "relative_change": {
      +      "properties": {
      +        "currency": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "state": {
      +          "enum": [
      +            "measured",
      +            "missing",
      +            "unavailable",
      +            "not_applicable"
      +          ],
      +          "type": "string"
      +        },
      +        "value": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "state",
      +        "value",
      +        "currency"
      +      ],
      +      "type": "object"
      +    },
      +    "source_ids": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "stability": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "status": {
      +      "enum": [
      +        "active",
      +        "expired",
      +        "retracted",
      +        "superseded"
      +      ],
      +      "type": "string"
      +    },
      +    "subject": {
      +      "properties": {
      +        "id": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "kind": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "label": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "kind",
      +        "id",
      +        "label"
      +      ],
      +      "type": "object"
      +    },
      +    "summary": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "title": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "unit": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "object",
      +    "id",
      +    "kind",
      +    "title",
      +    "summary",
      +    "subject",
      +    "source_ids",
      +    "metric",
      +    "unit",
      +    "direction",
      +    "materiality",
      +    "stability",
      +    "status",
      +    "group",
      +    "current_window",
      +    "comparison_window",
      +    "current",
      +    "comparison",
      +    "change",
      +    "relative_change"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behaviour, so the description is free to add domain meaning: what the payload covers (change, sources, current vs comparison window values, relative change) and that suppressed signals remain retrievable. The clause 'An observation, not a Decision' usefully separates it from onelence_get_decision, though nothing about errors or missing ids is stated.

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

Conciseness5/5

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

A single front-loaded sentence listing the returned facets, followed by a short contrast clause. No redundant restatement of the title or annotations.

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?

An output schema exists, so the description need not detail return values, yet it still summarises them compactly. The main remaining gap is guidance on signal_id format and on what happens for an unknown or suppressed id, which is a minor omission for a two-parameter read tool.

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?

signal_id has no schema description, and the description only indicates its provenance (output of onelence_list_signals) without format details. The site parameter and its 'newest active site' default are covered by the schema but not by the description, so with 50% coverage this is only partially compensating.

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?

States a specific verb and resource ('One signal by id') and explicitly ties the id to a named sibling (onelence_list_signals), so an agent can distinguish it from the list tool without reading either schema.

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?

Implies the workflow: obtain a signal id from onelence_list_signals, then fetch the detail here, including suppressed signals. It gives clear context but does not state exclusions or mention alternatives such as onelence_get_decision when the agent actually wants a recommendation.

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.