Skip to main content
Glama

Subscribe to Alerts

subscribe
Idempotent

Create a proactive monitoring subscription to a live-data event stream. Returns the new subscription id. Requires a Pipeworx OAuth account (anonymous + BYO cannot persist subscriptions). Supported types: "sec_8k" (8-K filings matching ticker + item codes — e.g. items:["5.02"] = officer change), "polymarket_edge" (Polymarket↔Kalshi cross-venue mispricings — params:{topic:"fed"}), "fred_series" (new FRED observations — params:{series_id:"UNRATE"}). Delivery channels: feed (always on — pull via recent_alerts or GET registry.pipeworx.io/alerts.json), and optionally email (set delivery:{email:"you@x.com"}) or sms (delivery:{sms:"+15551234567"} — phone must be verified at /account first; 10/day cap).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeYesSubscription type.
paramsYesType-specific filter. sec_8k: {ticker:"AAPL", items?:["5.02","1.01"]}. polymarket_edge: {topic:"fed", min_spread_bps?:500}. fred_series: {series_id:"UNRATE"}. patent_grant: {applicant:"Apple Inc."}. clinical_trial: {sponsor?:"Pfizer", condition?:"lung cancer", phase?:"PHASE3"} (sponsor or condition required).
deliveryNoOptional delivery channels in addition to the always-on persistent feed. {email:"you@x.com"} sends a templated alert per fired event. {sms:"+15551234567"} sends an SMS per event — must match the verified phone on the caller's account (verify at https://pipeworx.io/account first; 10/day cap). {webhook:"https://..."} POSTs each event JSON to your endpoint, HMAC-signed — the response includes delivery.webhook_secret (whsec_…) ONCE; verify X-Pipeworx-Signature = sha256 HMAC of "<X-Pipeworx-Timestamp>.<raw body>". Auto-disabled after 10 consecutive failing runs.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed2 schema fields changed
    • changedInput schema / properties / delivery / description
      Previous value: -"Optional delivery channels in addition to the always-on persistent feed. {email:\"you@x.com\"} sends a templated alert per fired event. {sms:\"+15551234567\"} sends an SMS per event — must match the verified phone on the caller's account (verify at https://pipeworx.io/account first). Capped at 10 SMS/day per subscription."New value: +"Optional delivery channels in addition to the always-on persistent feed. {email:\"you@x.com\"} sends a templated alert per fired event. {sms:\"+15551234567\"} sends an SMS per event — must match the verified phone on the caller's account (verify at https://pipeworx.io/account first; 10/day cap). {webhook:\"https://...\"} POSTs each event JSON to your endpoint, HMAC-signed — the response includes delivery.webhook_secret (whsec_…) ONCE; verify X-Pipeworx-Signature = sha256 HMAC of \"<X-Pipeworx-Timestamp>.<raw body>\". Auto-disabled after 10 consecutive failing runs."
    • addedInput schema / properties / delivery / properties / webhook
      Added value: +{
      +  "description": "HTTPS URL to POST fired events to. https only; localhost/private hosts rejected. Signing secret returned once at subscribe time.",
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • changedInput schema / properties / params / description
      Previous value: -"Type-specific filter. sec_8k: {ticker:\"AAPL\", items?:[\"5.02\",\"1.01\"]}. polymarket_edge: {topic:\"fed\", min_spread_bps?:500}. fred_series: {series_id:\"UNRATE\"}. patent_grant: {applicant:\"Apple Inc.\"} (use exact corporate form — match is approximate so wrong suffix returns the whole pool; payload flags the case)."New value: +"Type-specific filter. sec_8k: {ticker:\"AAPL\", items?:[\"5.02\",\"1.01\"]}. polymarket_edge: {topic:\"fed\", min_spread_bps?:500}. fred_series: {series_id:\"UNRATE\"}. patent_grant: {applicant:\"Apple Inc.\"}. clinical_trial: {sponsor?:\"Pfizer\", condition?:\"lung cancer\", phase?:\"PHASE3\"} (sponsor or condition required)."
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "sec_8k",
      -  "polymarket_edge",
      -  "fred_series",
      -  "patent_grant"
      -]New value: +[
      +  "sec_8k",
      +  "polymarket_edge",
      +  "fred_series",
      +  "patent_grant",
      +  "clinical_trial"
      +]
  3. Changed3 schema fields changed
    • changedInput schema / properties / params / description
      Previous value: -"Type-specific filter. For sec_8k: {ticker:\"AAPL\", items?:[\"5.02\",\"1.01\"]}. items defaults to all if omitted."New value: +"Type-specific filter. sec_8k: {ticker:\"AAPL\", items?:[\"5.02\",\"1.01\"]}. polymarket_edge: {topic:\"fed\", min_spread_bps?:500}. fred_series: {series_id:\"UNRATE\"}. patent_grant: {applicant:\"Apple Inc.\"} (use exact corporate form — match is approximate so wrong suffix returns the whole pool; payload flags the case)."
    • changedInput schema / properties / type / description
      Previous value: -"Subscription type. v1: \"sec_8k\"."New value: +"Subscription type."
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "sec_8k"
      -]New value: +[
      +  "sec_8k",
      +  "polymarket_edge",
      +  "fred_series",
      +  "patent_grant"
      +]
  4. Changed1 schema field changed
    • addedInput schema / properties / delivery
      Added value: +{
      +  "description": "Optional delivery channels in addition to the always-on persistent feed. {email:\"you@x.com\"} sends a templated alert per fired event. {sms:\"+15551234567\"} sends an SMS per event — must match the verified phone on the caller's account (verify at https://pipeworx.io/account first). Capped at 10 SMS/day per subscription.",
      +  "properties": {
      +    "email": {
      +      "description": "Email address to deliver alerts to. Validated against a standard pattern.",
      +      "type": "string"
      +    },
      +    "sms": {
      +      "description": "E.164 phone number, e.g. \"+15551234567\". Must match the account's verified phone.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  5. Added

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behavioral details: OAuth requirement, persistent vs. non-persistent for anonymous/BYO, always-on feed, SMS phone verification and daily cap, and for webhook delivery (in the schema) auto-disable after 10 consecutive failures and one-time signing secret. These add meaningful context beyond readOnly/idempotent flags.

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 well-organized: purpose first, then supported types, then delivery channels. Every sentence contributes useful information, though the length is considerable. It remains efficient given the number of types and channels covered.

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?

The description covers return value (subscription id), authentication requirements, delivery channels, restrictions (phone verification, cap), and feed access. Given the schema already details params and there is no output schema, the description is comprehensive for a tool of this complexity. It could reference siblings like unsubscribe, but the coverage is sufficient.

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?

Schema coverage is 100%, so baseline is 3. The description adds domain semantics for type values: sec_8k items meaning (e.g., '5.02' = officer change), polymarket_edge as cross-venue mispricings, fred_series as FRED observations. Delivery channels are also explained with examples. This adds interpretive value beyond the schema's structural descriptions.

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 opens with a specific action: 'Create a proactive monitoring subscription to a live-data event stream.' This clearly states the verb and resource, and distinguishes the tool from siblings like list_subscriptions and unsubscribe. It also immediately notes the returned value (subscription id), reinforcing its purpose.

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 explicitly states a prerequisite ('Requires a Pipeworx OAuth account') and notes that anonymous/BYO cannot persist subscriptions. It also provides delivery channel guidance, including how to pull the feed via recent_alerts or a registry endpoint. While it doesn't explicitly contrast with list_subscriptions/unsubscribe, the intended use case is evident from the context and sibling names.

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.

TDQS

A3.6/5.0
Disambiguation2/5

The StackExchange tools are distinct, but the dominating data-lookup cluster is highly ambiguous: ask_pipeworx, ask_pipeworx_beta (explicitly identical today), ask_pipeworx_grounded, deep_research, and validate_claim all route into the same underlying tool catalog. The polymorpharket tools also overlap heavily, making selection between bet_research, polymarket_edges, polymarket_arbitrage, and fill-risk checks genuinely hard.

Naming Consistency2/5

The names are all snake_case but otherwise follow no consistent pattern: bare verbs (remember, forget, subscribe), prefixed names (pipeworx_feedback, stack_get_user), composite domain names (ask_pipeworx, generate_llms_txt), and generic verbs (resolve_entity, validate_claim, search_within). The StackExchange subset itself is split between stack_get_user/stack_tags and search_questions/get_answers.

Tool Count2/5

36 tools is already in the 'too many' range for one server, and the mismatch with the server name is severe: only 5 of 36 tools relate to StackExchange. The rest form a broad Pipeworx/prediction-market data platform that would itself be oversized for a focused purpose.

Completeness2/5

For a StackExchange-focused server, the surface has core read operations but lacks question-detail-by-ID, comments, related questions, or any write/community actions, and the 31 unrelated tools do not fill that gap. For the broader apparent Pipeworx platform coverage is broad, but the set has no single coherent domain against which completeness can be meaningfully judged.