Skip to main content
Glama

Server Details

MCP server for paddle

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
0.2% over 36 days
Last Tested
Transport
Streamable HTTP
URL
Repository
pipeworx-io/mcp-paddle
GitHub Stars
0
Server Listing
Paddle Billing MCP

TDQS

A3.6/5.0

Scored across 45 tools

Disambiguation3/5

Several clusters overlap heavily: ask_pipeworx / ask_pipeworx_beta / ask_pipeworx_grounded / deep_research all route to the same catalog (beta is explicitly 'identical right now'), and polymarket_edges / polymarket_arbitrage / polymarket_fill_risk / bet_research all claim to find tradeable edges. The descriptions do spell out when to prefer each, so an attentive agent can pick, but boundaries are fuzzy rather than clean.

Naming Consistency3/5

Almost everything is snake_case, but there is no single predictable pattern: some names are verb-first (list_subscriptions, compare_entities, resolve_entity), many are bare nouns (entity_profile, company_facts, recent_changes), and two families carry domain prefixes (paddle_*, polymarket_*). Readable and mostly consistent in casing, but the verb/noun convention is mixed.

Tool Count2/5

45 tools is well past the useful ceiling for a single server, and they are not one coherent surface — they span Paddle billing, prediction-market arbitrage, web-archive forensics, SEC/financial lookups, memory, subscriptions, and LLM-visibility audits. A large fraction could be a separate server with its own focus.

Completeness2/5

Judged against the stated domain (Paddle), the surface is list-only: paddle_list_customers / subscriptions / transactions / adjustments with no get-by-id, create, update, cancel, or refund operations, so core billing lifecycle workflows dead-end. The surrounding Pipeworx research tools are broad, but they are not the server's named purpose and leave the billing side badly gapped.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updates
    • Changedask_pipeworx1 field changed
      • addedInput schema / properties / packs
        Added value: +{
        +  "description": "OPTIONAL. Restrict routing to these pack slugs (e.g. [\"sec-form-d\",\"sec-13f\"]) — the router then picks only from tools in those packs. Omit for the default full-catalog routing. Slugs come from list_packs / search_packs / https://pipeworx.io/directory; unlisted or unknown slugs are ignored and named in _meta.pack_scope.ignored, and if none of them resolves the question is routed across the whole catalog with _meta.pack_scope.full_catalog:true (never an empty answer).",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedask_pipeworx_beta1 field changed
      • addedInput schema / properties / packs
        Added value: +{
        +  "description": "OPTIONAL. Restrict routing to these pack slugs (e.g. [\"sec-form-d\",\"sec-13f\"]) — the router then picks only from tools in those packs. Omit for the default full-catalog routing. Slugs come from list_packs / search_packs / https://pipeworx.io/directory; unlisted or unknown slugs are ignored and named in _meta.pack_scope.ignored, and if none of them resolves the question is routed across the whole catalog with _meta.pack_scope.full_catalog:true (never an empty answer).",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedask_pipeworx_grounded1 field changed
      • addedInput schema / properties / prefer_tool
        Added value: +{
        +  "description": "Run this exact tool instead of letting the router choose — use a name from a previous answer's alternatives[]. Arguments are still filled from your question. Unknown names are refused, never guessed.",
        +  "type": "string"
        +}
    • Changedcompany_facts3 fields changed
      • changedInput schema / examples
        Previous value: -[
        -  {
        -    "attribute": "revenue",
        -    "company": "AAPL",
        -    "period": {
        -      "fiscal_year": 2023,
        -      "type": "annual"
        -    }
        -  }
        -]New value: +[
        +  {
        +    "attribute": "revenue",
        +    "company": "AAPL",
        +    "period": {
        +      "fiscal_year": 2023,
        +      "type": "annual"
        +    }
        +  },
        +  {
        +    "attribute": "shares_outstanding",
        +    "company": "TSLA",
        +    "period": {
        +      "fiscal_quarter": 2,
        +      "fiscal_year": 2026,
        +      "type": "quarterly"
        +    }
        +  },
        +  {
        +    "attribute": "capex",
        +    "company": "TSLA",
        +    "period": {
        +      "fiscal_quarter": 2,
        +      "fiscal_year": 2026,
        +      "type": "quarterly"
        +    }
        +  },
        +  {
        +    "attribute": "net_income",
        +    "company": "TSLA",
        +    "period": {
        +      "fiscal_quarter": 4,
        +      "fiscal_year": 2025,
        +      "type": "quarterly"
        +    }
        +  }
        +]
      • changedInput schema / properties / attribute / description
        Previous value: -"Which figure. \"revenue\" = total consolidated revenue; \"net_income\" = net income (loss); \"cash\" = cash and cash equivalents at the period end."New value: +"Which figure. \"revenue\" = total consolidated revenue; \"net_income\" = net income (loss); \"cash\" = cash and cash equivalents at the period end; \"gross_profit\"; \"operating_income\"; \"eps_diluted\" (diluted EPS, unit USD/shares, never derived or summed); \"capex\" (cash paid for PP&E); \"operating_cash_flow\" (net cash from operating activities); \"long_term_debt\" (the noncurrent balance-sheet line where the filer tags it, else total long-term debt — `fact.measure` says which); \"shares_outstanding\" (dei cover-page common shares, unit \"shares\", as of the COVER DATE rather than the period end)."
      • changedInput schema / properties / attribute / enum
        Previous value: -[
        -  "revenue",
        -  "net_income",
        -  "cash"
        -]New value: +[
        +  "revenue",
        +  "net_income",
        +  "cash",
        +  "gross_profit",
        +  "operating_income",
        +  "eps_diluted",
        +  "capex",
        +  "operating_cash_flow",
        +  "long_term_debt",
        +  "shares_outstanding"
        +]
    • Addedcompany_register_search
    • Changedentity_profile2 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "OPTIONAL ISO 3166-1 alpha-2 of the business register you mean (\"NO\", \"FI\", \"GB\", \"JP\", \"FR\", \"EE\", \"BR\"). Only affects a NAME lookup, and is often what separates the company you mean from a US namesake. When a name resolves to a register entity with no CIK, the SEC/CIK-keyed sections are reported under `sources_skipped` with reason `not_queried` — they were never asked, which is not the same as having failed.",
        +  "type": "string"
        +}
      • changedInput schema / properties / value / description
        Previous value: -"Ticker (e.g., \"AAPL\"), zero-padded CIK (e.g., \"0000320193\"), or company name (e.g., \"Moderna\") — names resolve via SEC EDGAR company-name match."New value: +"Ticker (e.g., \"AAPL\"), zero-padded CIK (e.g., \"0000320193\"), or company name (e.g., \"Moderna\"). A NAME now resolves through the national business registers as well as SEC EDGAR, so a non-US company returns its register identity and record rather than `resolved: false`."
    • Changedresolve_entity2 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "OPTIONAL ISO 3166-1 alpha-2 of the country whose business register you mean (\"NO\", \"FI\", \"JP\", \"GB\", \"FR\", \"EE\", \"BR\"). Narrows the national-register fan-out and is often the difference between the right company and a US namesake — \"Apple\" with country \"NO\" is a Norwegian company, not Apple Inc. Omitting it searches every register we can name, which is the right default when you do not know. company only; ignored for drug.",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "brand": {
        +      "type": "string"
        +    },
        +    "candidates": {
        +      "description": "Rivals, best first. Populated on \"ambiguous\" and on \"matched\" alike.",
        +      "items": {
        +        "properties": {
        +          "country": {
        +            "description": "ISO-2 of the REGISTER, not of the company's operations.",
        +            "type": "string"
        +          },
        +          "data_as_of": {
        +            "description": "That register's own snapshot date, per row, so a stale country is visible.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "detail_tool": {
        +            "description": "The live pack tool that returns the full record, e.g. \"brreg-no:get_entity\".",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "legal_form": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "legal_name": {
        +            "type": "string"
        +          },
        +          "lei": {
        +            "description": "From the GLEIF crosswalk when present. Never guessed from a name.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "match_type": {
        +            "enum": [
        +              "id",
        +              "exact",
        +              "exact_form",
        +              "prefix",
        +              "tokens"
        +            ],
        +            "type": "string"
        +          },
        +          "matched_kind": {
        +            "enum": [
        +              "legal",
        +              "trading",
        +              "former",
        +              "english",
        +              "kana"
        +            ],
        +            "type": "string"
        +          },
        +          "matched_name": {
        +            "description": "The name row that matched, exactly as the publisher spells it.",
        +            "type": "string"
        +          },
        +          "register": {
        +            "description": "Publisher + dataset, e.g. \"Brønnøysund Register Centre, Enhetsregisteret\". Never a URL or filename.",
        +            "type": "string"
        +          },
        +          "register_id": {
        +            "description": "The native id in the register's own canonical formatting.",
        +            "type": "string"
        +          },
        +          "register_key": {
        +            "description": "Stable machine slug for the register.",
        +            "type": "string"
        +          },
        +          "registration_status": {
        +            "description": "GLEIF rows only: the LEI RECORD's lifecycle (ISSUED/LAPSED/RETIRED/...). A DIFFERENT fact from `status` — a lapsed LEI is unmaintained reference data about a company that may well still trade.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "score": {
        +            "description": "0-1, assigned centrally. An adapter never grades itself.",
        +            "type": "number"
        +          },
        +          "status": {
        +            "description": "The COMPANY's status.",
        +            "enum": [
        +              "active",
        +              "inactive",
        +              "dissolved",
        +              "unknown"
        +            ],
        +            "type": "string"
        +          },
        +          "status_raw": {
        +            "description": "The register's own status word, verbatim and unglossed.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "country",
        +          "register",
        +          "register_key",
        +          "register_id",
        +          "legal_name",
        +          "score",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "cik_withheld": {
        +      "description": "A CIK that came back from a FUZZY SEC name match and is NOT asserted, because the spine matched a stronger non-US candidate. The number is here so a caller who wanted the US filer can still use it; what changed is that we no longer claim it IS the answer. See `unresolved.cik` for the reason.",
        +      "type": "string"
        +    },
        +    "fanout_incomplete": {
        +      "description": "Present IFF at least one register in `searched[]` carried an `error` — set even when `match_status` stayed \"ambiguous\". `withheld_match` is the candidate this call declined to ASSERT because a register was missing, carried rather than discarded so a caller who accepts the caveat can still use it.",
        +      "properties": {
        +        "unavailable": {
        +          "items": {
        +            "properties": {
        +              "country": {
        +                "type": "string"
        +              },
        +              "error": {
        +                "type": "string"
        +              },
        +              "register": {
        +                "type": "string"
        +              },
        +              "register_key": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "withheld_match": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "figi_withheld": {
        +      "description": "A FIGI that matched this name in OpenFIGI (`figi_match: \"name_search\"`) and is NOT asserted, because `match_status` is \"incomplete\": a name search cannot tell a company apart from a security carrying its name, and the registers that would have settled it are the ones we could not ask. A `ticker_map` FIGI is never withheld this way — it is corroborated by the resolved ticker it came from. Carried so a caller who accepts the caveat can use it; see `unresolved.figi`, and retry, since a transiently rate-limited register completes on the next call.",
        +      "type": "string"
        +    },
        +    "ids": {
        +      "description": "Every identifier established: cik, ticker, company_name, lei, figi, isin, cusip, register_id, register_country. A key absent here appears in `unresolved` with a reason — never silently dropped.",
        +      "type": "object"
        +    },
        +    "ingredient": {
        +      "type": "string"
        +    },
        +    "match_explanation": {
        +      "description": "Plain words. Always present when the spine ran, and required on \"ambiguous\" and \"no_match\".",
        +      "type": "string"
        +    },
        +    "match_scoring": {
        +      "description": "The margin rule's own inputs, so a caller can see WHY it fell where it did.",
        +      "properties": {
        +        "margin": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "runner_up": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "thresholds": {
        +          "properties": {
        +            "floor": {
        +              "type": "number"
        +            },
        +            "margin": {
        +              "type": "number"
        +            },
        +            "match": {
        +              "type": "number"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "top": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "match_status": {
        +      "description": "The headline to branch on. \"ambiguous\" is an ANSWER, not a failure: two companies matched the name equally well and both are in `candidates`. \"no_match\" means every register in `searched` was asked and none carried it. \"incomplete\" means one of them could NOT be asked (it carries an `error` in `searched[]`), so the candidate set is short by an unknown amount and no id is asserted — distinct from \"ambiguous\" because a RETRY is what resolves it, not a narrower query; `fanout_incomplete` names the unreachable registers and carries, under `withheld_match`, the candidate that would have been returned on a complete fan-out.",
        +      "enum": [
        +        "matched",
        +        "ambiguous",
        +        "no_match",
        +        "incomplete"
        +      ],
        +      "type": "string"
        +    },
        +    "notes": {
        +      "type": "string"
        +    },
        +    "query": {
        +      "type": "string"
        +    },
        +    "registers": {
        +      "description": "The matched entity as every register that carries it — the match (flagged `matched: true`) plus anything that collapsed into it. A Companies House number AND the LEI that crosswalks to it are the SAME answer, not rivals.",
        +      "items": {
        +        "properties": {
        +          "country": {
        +            "description": "ISO-2 of the REGISTER, not of the company's operations.",
        +            "type": "string"
        +          },
        +          "data_as_of": {
        +            "description": "That register's own snapshot date, per row, so a stale country is visible.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "detail_tool": {
        +            "description": "The live pack tool that returns the full record, e.g. \"brreg-no:get_entity\".",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "legal_form": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "legal_name": {
        +            "type": "string"
        +          },
        +          "lei": {
        +            "description": "From the GLEIF crosswalk when present. Never guessed from a name.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "match_type": {
        +            "enum": [
        +              "id",
        +              "exact",
        +              "exact_form",
        +              "prefix",
        +              "tokens"
        +            ],
        +            "type": "string"
        +          },
        +          "matched_kind": {
        +            "enum": [
        +              "legal",
        +              "trading",
        +              "former",
        +              "english",
        +              "kana"
        +            ],
        +            "type": "string"
        +          },
        +          "matched_name": {
        +            "description": "The name row that matched, exactly as the publisher spells it.",
        +            "type": "string"
        +          },
        +          "register": {
        +            "description": "Publisher + dataset, e.g. \"Brønnøysund Register Centre, Enhetsregisteret\". Never a URL or filename.",
        +            "type": "string"
        +          },
        +          "register_id": {
        +            "description": "The native id in the register's own canonical formatting.",
        +            "type": "string"
        +          },
        +          "register_key": {
        +            "description": "Stable machine slug for the register.",
        +            "type": "string"
        +          },
        +          "registration_status": {
        +            "description": "GLEIF rows only: the LEI RECORD's lifecycle (ISSUED/LAPSED/RETIRED/...). A DIFFERENT fact from `status` — a lapsed LEI is unmaintained reference data about a company that may well still trade.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "score": {
        +            "description": "0-1, assigned centrally. An adapter never grades itself.",
        +            "type": "number"
        +          },
        +          "status": {
        +            "description": "The COMPANY's status.",
        +            "enum": [
        +              "active",
        +              "inactive",
        +              "dissolved",
        +              "unknown"
        +            ],
        +            "type": "string"
        +          },
        +          "status_raw": {
        +            "description": "The register's own status word, verbatim and unglossed.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "country",
        +          "register",
        +          "register_key",
        +          "register_id",
        +          "legal_name",
        +          "score",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "related": {
        +      "description": "Entities that collapsed INTO the match, each carrying `collapsed_by`.",
        +      "items": {
        +        "properties": {
        +          "country": {
        +            "description": "ISO-2 of the REGISTER, not of the company's operations.",
        +            "type": "string"
        +          },
        +          "data_as_of": {
        +            "description": "That register's own snapshot date, per row, so a stale country is visible.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "detail_tool": {
        +            "description": "The live pack tool that returns the full record, e.g. \"brreg-no:get_entity\".",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "legal_form": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "legal_name": {
        +            "type": "string"
        +          },
        +          "lei": {
        +            "description": "From the GLEIF crosswalk when present. Never guessed from a name.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "match_type": {
        +            "enum": [
        +              "id",
        +              "exact",
        +              "exact_form",
        +              "prefix",
        +              "tokens"
        +            ],
        +            "type": "string"
        +          },
        +          "matched_kind": {
        +            "enum": [
        +              "legal",
        +              "trading",
        +              "former",
        +              "english",
        +              "kana"
        +            ],
        +            "type": "string"
        +          },
        +          "matched_name": {
        +            "description": "The name row that matched, exactly as the publisher spells it.",
        +            "type": "string"
        +          },
        +          "register": {
        +            "description": "Publisher + dataset, e.g. \"Brønnøysund Register Centre, Enhetsregisteret\". Never a URL or filename.",
        +            "type": "string"
        +          },
        +          "register_id": {
        +            "description": "The native id in the register's own canonical formatting.",
        +            "type": "string"
        +          },
        +          "register_key": {
        +            "description": "Stable machine slug for the register.",
        +            "type": "string"
        +          },
        +          "registration_status": {
        +            "description": "GLEIF rows only: the LEI RECORD's lifecycle (ISSUED/LAPSED/RETIRED/...). A DIFFERENT fact from `status` — a lapsed LEI is unmaintained reference data about a company that may well still trade.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "score": {
        +            "description": "0-1, assigned centrally. An adapter never grades itself.",
        +            "type": "number"
        +          },
        +          "status": {
        +            "description": "The COMPANY's status.",
        +            "enum": [
        +              "active",
        +              "inactive",
        +              "dissolved",
        +              "unknown"
        +            ],
        +            "type": "string"
        +          },
        +          "status_raw": {
        +            "description": "The register's own status word, verbatim and unglossed.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "country",
        +          "register",
        +          "register_key",
        +          "register_id",
        +          "legal_name",
        +          "score",
        +          "status"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "resolved": {
        +      "description": "At least one identifier was established. Read `match_status` and `unresolved` for WHICH — a company can be resolved in a national register with no CIK at all.",
        +      "type": "boolean"
        +    },
        +    "resources": {
        +      "type": "object"
        +    },
        +    "searched": {
        +      "description": "EVERY register asked, with its own as-of date and row count. A register that could not be reached carries `error` — 0 rows with an error is \"we could not ask\", 0 rows without one is \"nothing is there\", and they are different answers.",
        +      "items": {
        +        "properties": {
        +          "country": {
        +            "type": "string"
        +          },
        +          "data_as_of": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "error": {
        +            "type": "string"
        +          },
        +          "register": {
        +            "type": "string"
        +          },
        +          "register_key": {
        +            "type": "string"
        +          },
        +          "rows": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "register",
        +          "register_key",
        +          "country",
        +          "rows"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sec_alternatives": {
        +      "description": "EDGAR's own discarded near-misses on a name match, surfaced instead of dropped.",
        +      "items": {
        +        "properties": {
        +          "cik": {
        +            "type": "string"
        +          },
        +          "company_name": {
        +            "type": "string"
        +          },
        +          "ticker": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sources": {
        +      "description": "Per-identifier provenance. Every key in `ids` has a matching key here.",
        +      "type": "object"
        +    },
        +    "type": {
        +      "type": "string"
        +    },
        +    "unresolved": {
        +      "description": "Per-identifier reason an id could NOT be established — the honest twin of `ids`.",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "type",
        +    "query",
        +    "resolved",
        +    "ids",
        +    "sources",
        +    "unresolved"
        +  ],
        +  "type": "object"
        +}
    • Changedsubscribe2 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.\"}. clinical_trial: {sponsor?:\"Pfizer\", condition?:\"lung cancer\", phase?:\"PHASE3\"} (sponsor or condition required). form_d: {state?:\"CA\", industry?:\"Biotechnology\", min_amount?:500000, exemption?:\"06B\"} (all optional — omit all to watch every new Form D nationwide). news_keyword: {query:\"\\\"semiconductor sanctions\\\"\", lang?:\"eng\", domains?:[\"reuters.com\"]} (query required). job_post: EITHER {ats:\"greenhouse\", board_token:\"acme\"} (exact board) OR {domain:\"acme.com\"} (auto-detected), plus optional title_query/location_query substrings. tool_diff: {tool:\"form5500\", args?:{...}, fields:[\"headcount\"], schedule:\"daily\"} — re-runs that tool on schedule and fires when the named fields change; tool must be read-only and not need a Pipeworx-held platform key; schedule \"hourly\" needs the paid tier. Unknown keys in form_d/news_keyword/job_post/tool_diff params are rejected at subscribe time."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). form_d: {state?:\"CA\", industry?:\"Biotechnology\", min_amount?:500000, exemption?:\"06B\"} (all optional — omit all to watch every new Form D nationwide). news_keyword: {query:\"\\\"semiconductor sanctions\\\"\", lang?:\"eng\", domains?:[\"reuters.com\"]} (query required). job_post: EITHER {ats:\"greenhouse\", board_token:\"acme\"} (exact board) OR {domain:\"acme.com\"} (auto-detected), plus optional title_query/location_query substrings. tool_diff: {tool:\"form5500\", args?:{...}, fields:[\"headcount\"], schedule:\"daily\"} — re-runs that tool on schedule and fires when the named fields change; tool must be read-only and not need a Pipeworx-held platform key; schedule \"hourly\" needs the paid tier. new_entity: {state:\"CO\", name_query?:\"dental\", entity_type?:\"limited liability\"} — state is required and must be one of FL, NY, CO, OR, CT, TX, PA. tech_change: {domains:[\"acme.com\",\"example.org\"], technologies?:[\"Shopify\",\"Segment\"]} — domains required (1-200), technologies optional (exact names, case-insensitive) to narrow which detected technologies alert. Unknown keys in form_d/news_keyword/job_post/tool_diff/new_entity/tech_change params are rejected at subscribe time."
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "sec_8k",
        -  "polymarket_edge",
        -  "fred_series",
        -  "patent_grant",
        -  "clinical_trial",
        -  "form_d",
        -  "news_keyword",
        -  "job_post",
        -  "tool_diff"
        -]New value: +[
        +  "sec_8k",
        +  "polymarket_edge",
        +  "fred_series",
        +  "patent_grant",
        +  "clinical_trial",
        +  "form_d",
        +  "news_keyword",
        +  "job_post",
        +  "tool_diff",
        +  "new_entity",
        +  "tech_change"
        +]
  2. 5 tool updates
    • Addedarchive_compare
    • Addedarchive_evidence
    • Addedclassify_row
    • Addedresearch_row
    • Changedsubscribe2 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.\"}. clinical_trial: {sponsor?:\"Pfizer\", condition?:\"lung cancer\", phase?:\"PHASE3\"} (sponsor or condition required)."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). form_d: {state?:\"CA\", industry?:\"Biotechnology\", min_amount?:500000, exemption?:\"06B\"} (all optional — omit all to watch every new Form D nationwide). news_keyword: {query:\"\\\"semiconductor sanctions\\\"\", lang?:\"eng\", domains?:[\"reuters.com\"]} (query required). job_post: EITHER {ats:\"greenhouse\", board_token:\"acme\"} (exact board) OR {domain:\"acme.com\"} (auto-detected), plus optional title_query/location_query substrings. tool_diff: {tool:\"form5500\", args?:{...}, fields:[\"headcount\"], schedule:\"daily\"} — re-runs that tool on schedule and fires when the named fields change; tool must be read-only and not need a Pipeworx-held platform key; schedule \"hourly\" needs the paid tier. Unknown keys in form_d/news_keyword/job_post/tool_diff params are rejected at subscribe time."
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "sec_8k",
        -  "polymarket_edge",
        -  "fred_series",
        -  "patent_grant",
        -  "clinical_trial"
        -]New value: +[
        +  "sec_8k",
        +  "polymarket_edge",
        +  "fred_series",
        +  "patent_grant",
        +  "clinical_trial",
        +  "form_d",
        +  "news_keyword",
        +  "job_post",
        +  "tool_diff"
        +]
  3. 40 tool updates
    • First observedai_visibility_check
    • First observedask_pipeworx
    • First observedask_pipeworx_beta
    • First observedask_pipeworx_grounded
    • First observedbet_research
    • First observedcompany_facts
    • First observedcompare_entities
    • First observeddeep_research
    • First observeddiscover_tools
    • First observedentity_profile
    • First observedforget
    • First observedgenerate_llms_txt
    • First observedkalshi_weather_edge
    • First observedlist_subscriptions
    • First observedpaddle_list_adjustments
    • First observedpaddle_list_customers
    • First observedpaddle_list_subscriptions
    • First observedpaddle_list_transactions
    • First observedpipeworx_feedback
    • First observedpipeworx_trending
    • First observedpolymarket_arbitrage
    • First observedpolymarket_edge_tracker
    • First observedpolymarket_edges
    • First observedpolymarket_fill_risk
    • First observedpolymarket_kalshi_spread
    • First observedrecall
    • First observedrecent_alerts
    • First observedrecent_changes
    • First observedrelease_calendar_markets
    • First observedremember
    • First observedresolution_audit
    • First observedresolution_diff
    • First observedresolve_entity
    • First observedscan_competitor_ai_presence
    • First observedscan_dependency
    • First observedsearch_within
    • First observedsubscribe
    • First observedsuggest_questions
    • First observedunsubscribe
    • First observedvalidate_claim

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.