Signals. Infra
MCP server

Privacy

Exactly what the MCP server and the connectors record about a call, and what they never receive.

The Signals MCP server answers tool calls. It never receives your prompts or your conversation: a connector (Claude, ChatGPT, the Excel add-in, your own agent) sends only the name of the tool it wants and the arguments the assistant composed for it.

Those arguments are of two kinds:

  • Identifiers: a ticker, an accession number, a document or transcript id, a metric key, a fiscal period, a date range, a limit. Where a record below lists ticker, this is the value it holds.
  • Free text: a search query, keywords, anything else a caller typed. Free text is used to answer the call and then discarded. It is not logged, not stored, and not sent to error tracking; when an error message would quote it, the text is replaced with [redacted] before the error is recorded.

What is recorded

These are the only records a call produces. The list is enforced by a test that calls every MCP tool with marker text in every free-text argument and checks that each record holds exactly these fields and never the marker.

RecordFields
request_log: one line per requestts, request_id, account_id, api_key_id, key_prefix, mode, method, path, status, duration_ms, bytes_out, client_ip, user_agent
application_log: one line per tool call, and per rejected or failed callevent, tool, lane, account_id, fetch, ok, request_id, code, argument_names, skill_id, version, outcome, error_type
usage_ledger_daily: one row per key per day, for billingid, account_id, api_key_id, period_date, request_count, error_count, bytes_out, units_spent, datapoints_returned
usage_ledger_events: one row per metered call, shown on GET /v1/usageid, account_id, api_key_id, request_id, method, route, status_code, datapoints, units, at
usage_counters: weekly counters behind the usage receipt, expiring after 8 daysaccount_id, tool, ticker, day

argument_names records the NAMES of the arguments a rejected call used (for example symbol,limit), never their values. key_prefix is the first characters of the key, never the secret. api_key_id is empty for a connector signed in with OAuth.

What is never recorded

  • Your prompts, your conversation, or the assistant's reply.
  • The value of any free-text argument (a query, keywords).
  • The response body of a tool call.
  • The full API key or bearer token.

On this page