Skip to main content
Glama

Server Details

Check exact npm/PyPI upgrades for evidence-backed breaking changes; query APIs and components.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
97.5% over 58 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
factreason/factreason
GitHub Stars
0
Server Listing
factreason

TDQS

A4.2/5.0

Scored across 11 tools

Disambiguation4/5

The set has an unusually dense cluster of spec-related tools (api_schema, auth_playbook, integration_brief, api_breaking_changes, deprecation_scan, discover_api, subscribe_spec_changes), which could confuse an agent at first glance. However, descriptions explicitly cross-reference each other with clear 'prefer X when Y' guidance, drawing usable boundaries between exploration, one-call assembly, version diffs, and deprecation checks. A couple of pairs (api_schema vs integration_brief, breaking_changes vs deprecation_scan) remain close enough to warrant care.

Naming Consistency4/5

All tools share the factreason_ prefix, lowercase snake_case, and a consistent domain_noun structure. The one deviation is verb-first vs noun-first ordering (create_key, discover_api, subscribe_spec_changes vs api_schema, auth_playbook, integration_brief), which is a minor stylistic inconsistency rather than a readability problem.

Tool Count5/5

Eleven tools for a server spanning API discovery, schema/auth lookup, integration briefs, version-diff analysis, package advisories, component specs, key issuing, top-ups, and spec watches is well-scoped. Each tool maps to a distinct capability rather than padding the surface.

Completeness3/5

The read/analysis side of the domain is broadly covered, but there are notable dead ends: subscribe_spec_changes references a polling endpoint yet no tool exists to read watch events or to unsubscribe, and there is no balance/credit-inquiry tool even though 402 handling is central to the workflow. These gaps will force agents outside the MCP surface for common follow-up actions.

Available Tools

11 tools
factreason_api_breaking_changesAPI breaking changesA
Read-onlyIdempotent
Inspect

Compare two versions of a third-party API and return breaking changes, including removed endpoints, parameter type changes, removed request body fields, and migration guides. Use factreason_package_upgrade_advisory for npm or PyPI packages.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoYour FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.
serviceYesThird-party API service, e.g. "Stripe" or "OpenAI"
toVersionNoOptional exact version being evaluated
fromVersionNoOptional exact version currently targeted

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundNo
billedNo
changesNo
meaningNo
messageNo
serviceNo
suggestionNo
changeCountNo
alternativesNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this a safe, idempotent read (readOnlyHint, destructiveHint=false), so the safety profile is covered. The description adds real behavioral value by specifying the analysis performed (version diffing for breaking changes) and that migration guides are produced. Return format is not described, but an output schema exists, so that omission is acceptable.

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?

Two sentences, both earning their place: the first defines capability and outputs, the second handles sibling routing. The core purpose is front-loaded with no preamble or filler.

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?

With an output schema present, annotations covering safety, and 100% parameter description coverage, the description carries everything an agent needs: what the tool analyzes, what it returns, and which sibling to use instead. No meaningful gap remains.

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?

Schema description coverage is 100%, so all four parameters (apiKey, service, fromVersion, toVersion) are documented in the schema itself. The description only implies the two-version comparison and adds no syntax, defaults, or examples beyond what the schema provides, so the baseline of 3 applies.

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 ('Compare two versions of a third-party API') and enumerates the concrete outputs (removed endpoints, parameter type changes, removed request body fields, migration guides). It also names the sibling it is not (factreason_package_upgrade_advisory), so an agent can distinguish it without opening any 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?

Explicitly routes the agent away from this tool for npm/PyPI packages by naming factreason_package_upgrade_advisory, which is a clear alternative. However it gives no guidance on when to prefer this over other version-related siblings such as factreason_deprecation_scan.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

factreason_api_schemaAPI schema searchA
Read-onlyIdempotent
Inspect

Search exact request and response schemas for third-party API endpoints. Pass service alone to list its indexed endpoints, add query to narrow by path or operation, or use query alone across services; returns matches or nearest services. Uses metered access and does not modify source data. Prefer factreason_integration_brief for one callable request.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional endpoint path or operation, e.g. "payment_intents"
apiKeyNoYour FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.
serviceNoOptional service filter, e.g. "Stripe"

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
foundNo
messageNo
resultsNo
totalMatchedNo
nearestServicesNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false. The description adds value beyond that: 'Uses metered access' (a cost implication not in the annotations) and 'returns matches or nearest services' (a fallback behavior worth knowing). It stops short of describing latency or result ranking, so a 4 rather than 5.

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?

Two sentences, front-loaded with the primary purpose, then the mode semantics and the sibling alternative. No filler and every clause carries information.

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?

With an output schema present, return values need no explanation. Combined with full schema coverage and rich annotations, the description covers purpose, modes, fallback behavior, cost, and the alternative tool — nothing material is missing 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?

Schema coverage is 100%, so baseline is 3, but the description goes beyond the schema by explaining how parameters combine — service alone, service+query, or query alone — which the schema cannot convey since every property is individually marked optional.

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 precise verb and resource: 'Search exact request and response schemas for third-party API endpoints.' This is distinct from siblings like factreason_discover_api and factreason_component_spec, and it explicitly names factreason_integration_brief as the alternative for a different need.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly enumerates the invocation modes: 'Pass service alone to list its indexed endpoints, add query to narrow by path or operation, or use query alone across services.' It also names the sibling alternative and the condition ('for one callable request') that selects it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

factreason_auth_playbookAuth and error playbookA
Read-onlyIdempotent
Inspect

Get publisher-declared authentication schemes, scopes, rate-limit headers, and error codes for one third-party API. Returns a structured playbook or nearest service suggestions, and marks undocumented details as unstated rather than guessing. Uses metered access. Prefer factreason_integration_brief when assembling a complete API call.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoYour FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.
serviceYesThird-party API service, e.g. "Stripe", "Twilio", or "Cloudflare"

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundNo
compactNo
messageNo
playbookNo
nearestServicesNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds real value beyond them by disclosing metered access (cost), fallback behavior ('nearest service suggestions'), and the honesty trait of marking undocumented details 'unstated rather than guessing'. It does not state rate-limit or latency behavior for the tool itself, keeping it out of the 5 band.

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?

Three front-loaded sentences with no filler: purpose first, then fallback/honesty behavior, then the sibling routing. Efficient, though the return-behavior and routing clauses could be tightened slightly.

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 2-parameter read-only tool with an output schema and full schema description coverage, the description covers purpose, auth key mechanics indirectly, metered cost, fallback behavior, and sibling routing. Nothing an agent needs to call it correctly is missing.

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?

Schema description coverage is 100%: the apiKey parameter's header-vs-key guidance and the service example are fully documented in the schema. The description adds no parameter-level syntax or format detail beyond what the schema already provides, so the baseline of 3 applies.

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 (get) and a concrete resource set (publisher-declared auth schemes, scopes, rate-limit headers, error codes) scoped to 'one third-party API'. It also differentiates itself by naming the sibling factreason_integration_brief and the distinct job it does.

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?

Explicitly routes the agent: 'Prefer factreason_integration_brief when assembling a complete API call,' giving a clear alternative and the condition that selects it. It lacks an explicit when-not statement (e.g., what to use when the service is unknown or when no playbook exists), so it falls short of the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

factreason_component_specComponent specificationA
Read-onlyIdempotent
Inspect

Look up electronics component pin assignments, voltage range, package, and alternatives. Pass exact partNumber for one component or query for a capability search; partNumber takes precedence if both are supplied. For exact lookups, set responseFormat="compact" for tokenizer-measured context savings; the backward-compatible default is "full". Uses metered access and returns matches or suggestions. Confirm critical values against the manufacturer datasheet.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoFree-text capability search, e.g. "3.3V ARM MCU with SPI"
apiKeyNoYour FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.
partNumberNoExact part number, e.g. "STM32F401RE"
responseFormatNoUse compact for an exact part lookup; full preserves the legacy data responsefull

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
hintNo
foundNo
compactNo
messageNo
resultsNo
partNumberNo
provenanceNo
qualityScoreNo
tokenMetricsNo
totalMatchedNo
nearestMatchesNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds what annotations cannot: metered access, that results may be matches or suggestions rather than exact hits, and a datasheet-verification caveat. The compact/full output-shape tradeoff is also disclosed. Minor omission is any note on rate limits or what 'suggestions' implies for reliability.

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?

Front-loads the capability, then mode selection, then format, then the caveat. Four sentences, each carrying distinct information. Slightly dense but no filler; the caveat sentence is arguably the least load-bearing but is defensible for engineering data.

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 return values need not be described, and the auth parameter is documented in the schema. The description supplies mode selection, precedence, metered access, and a correctness caveat, leaving little an agent needs to call it correctly. A note on pagination or result-count limits would close the remaining gap.

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 the baseline is 3, but the description adds genuinely new meaning: the precedence order between partNumber and query, and the tokenizer-measured context savings of responseFormat=compact versus the backward-compatible full default. That is substantive guidance beyond the enum and property docs.

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 ('look up electronics component pin assignments, voltage range, package, and alternatives') and enumerates the exact fields returned. It is clearly distinct from every sibling, which are all API-lifecycle tools (breaking changes, schema, auth, deprecation).

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?

Gives an explicit routing rule between the two modes ('Pass exact partNumber for one component or query for a capability search') and resolves the conflict case ('partNumber takes precedence if both are supplied'). No sibling alternatives are named, but none of the siblings overlap functionally, so this gap is minor.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

factreason_create_keyCreate an API keyAInspect

Get a FactReason API key for yourself, instantly, with no human, no signup and no card. Returns a key carrying one-off trial credit that you can spend immediately on any tool. CALL THIS FIRST if you have no key, or as soon as any FactReason tool returns HTTP 402 Payment Required — then retry the original call with the key, passed as that tool's apiKey argument (or as an Authorization: Bearer header if your client can set one). The tool is free and is never metered. Supplying an email is optional and only affects whether trial credit is granted; a key is always issued either way.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoOptional contact address for the key owner. Improves the chance of receiving trial credit and lets the operator reach you about corrections. Never send a human's address without their agreement.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
errorNo
apiKeyNo
createdNo
howToUseNo
topupUrlNo
trialGrantedNo
trialCreditUsdNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false and idempotentHint=false. The description adds the materially important traits: the tool is free and never metered, a key is always issued, trial credit may or may not be granted, and the email never blocks issuance. These are exactly the facts an agent needs before spending a call.

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?

Front-loads the outcome, then the trigger conditions, then the retry mechanics, then the free/email caveats. Every sentence carries distinct operational information with no filler.

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?

An output schema exists, so return values need not be explained. With one optional parameter, full schema coverage, annotations, and explicit recovery instructions for the 402 case, nothing needed to call this correctly is missing.

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 the baseline is 3. The description nevertheless adds meaning beyond the schema by clarifying that email 'only affects whether trial credit is granted' and that a key is issued either way, which resolves the ambiguity in the schema's 'improves the chance' wording.

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 ('Get a FactReason API key') plus the distinguishing conditions (no signup, no card, instant). It is unmistakably different from the sibling documentation/spec tools, which do not issue credentials.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use triggers: 'CALL THIS FIRST if you have no key' and 'as soon as any FactReason tool returns HTTP 402 Payment Required'. It also states the follow-up action (retry with the key via apiKey argument or Authorization header), so the agent knows both when to call and what to do after.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

factreason_deprecation_scanDeprecation scanA
Read-onlyIdempotent
Inspect

Scan publisher specifications for deprecated endpoints or parameters, sunset dates, and replacement operations. Omit filters for the catalogue-wide view, pass service to limit one API, and add endpoints to check selected paths. Uses metered access when findings exist. Use factreason_api_breaking_changes for broader version-to-version changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoYour FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.
serviceNoOptional service filter, e.g. "Stripe" or "Twilio"
endpointsNoOptional endpoint paths to check within the selected service

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
foundNo
messageNo
resultsNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, so the safety profile is covered. The description adds a real behavioral trait not in the annotations — 'Uses metered access when findings exist' — which tells the agent about cost incurred on results. It does not add return-format or rate-limit detail, but the output schema covers returns, so a 4 is warranted.

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?

Three tight sentences: purpose first, then scoping mechanics, then the metering note and the routing pointer to the sibling. No filler and no repetition of what the schema or annotations already state.

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?

With 0 required params, 100% schema coverage, full annotations, and an output schema, the remaining burden on the description is usage and cost context — both supplied. An agent has everything needed to decide when to call this versus factreason_api_breaking_changes and how to scope the call.

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 the baseline is 3, but the description adds semantics the schema lacks: what happens when the optional filters are omitted (catalogue-wide) and how service and endpoints compose (endpoint paths are checked within the selected service). That default/combination behavior is genuinely beyond the per-field schema text.

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 (scan) and resource (publisher specifications) plus the exact artifacts it surfaces: deprecated endpoints/parameters, sunset dates, and replacement operations. It explicitly names the sibling it is not (factreason_api_breaking_changes), so an agent can route correctly without opening 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete invocation guidance — omit filters for the catalogue-wide view, pass service to scope to one API, add endpoints to check specific paths — and names the alternative tool with the condition that selects it ('broader version-to-version changes'). This is explicit when-to-use, how-to-scope, and when-to-use-something-else.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

factreason_discover_apiDiscover an APIA
Read-onlyIdempotent
Inspect

Find third-party APIs for a capability when the provider is unknown. Supply a concise capability such as "sms" or "manage DNS"; returns ranked services, example endpoints, and a next step. Uses metered access. When the provider is already known, call factreason_integration_brief instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoYour FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.
capabilityYesCapability to search for, e.g. "send an SMS" or "charge a card"

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
countNo
foundNo
billedNo
messageNo
resultsNo
nextStepNo
capabilityNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds a trait annotations do not: "Uses metered access", a cost/billing consequence the agent should know before calling. It stops short of describing rate limits or quota behavior, so it is strong but not exhaustive.

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?

Three short sentences, front-loaded with the purpose and the unknown-provider condition, then the return shape, then the routing alternative. Every sentence carries distinct information with no filler.

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?

Output schema exists, so the brief mention of ranked services and a next step is enough without enumerating return fields, and annotations cover safety. With metered access disclosed and the sibling routing rule stated, nothing an agent needs to call this correctly is missing.

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?

Schema description coverage is 100%, so both parameters (including the apiKey header fallback and the capability examples) are already documented in the schema, which sets the baseline at 3. The description's guidance to "Supply a concise capability such as 'sms' or 'manage DNS'" is a mild hint about expected granularity but largely overlaps the schema's own examples.

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 ("Find third-party APIs") plus the narrowing condition "when the provider is unknown", which separates it cleanly from the provider-known path. An agent can distinguish it from factreason_integration_brief without opening 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit selection rule: use this when the provider is unknown, and names the concrete alternative (factreason_integration_brief) for the known-provider case. Nothing about when to route here versus there is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

factreason_integration_briefIntegration briefA
Read-onlyIdempotent
Inspect

Compile one callable third-party API brief: base URL, auth scheme, required parameters and types, request body, and documented response codes. Service is required and endpoint optionally narrows the operation. Set responseFormat="compact" for tokenizer-measured context savings; the backward-compatible default returns the full brief plus compact form. Uses metered access. Prefer factreason_api_schema when exploring multiple endpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoYour FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.
serviceYesThird-party API service, e.g. "Stripe" or "Twilio"
endpointNoOptional path or operation fragment used to select one call
responseFormatNoUse compact for the callable facts only; full preserves the legacy brief responsefull

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
briefNo
foundNo
billedNo
compactNo
messageNo
serviceNo
tokenMetricsNo
nearestServicesNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds value beyond them: 'Uses metered access' discloses a cost/quota trait, and it clarifies the responseFormat default behavior ('backward-compatible default returns the full brief plus compact form'), which the schema does not spell out.

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?

Front-loaded with purpose in the first sentence, followed by parameter guidance, format behavior, metered access, and the sibling alternative. Dense but each sentence earns its place; minor redundancy in restating the responseFormat tradeoff that the schema also gestures at.

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?

An output schema exists, so return values need not be explained, and the description still summarizes the brief's contents. Metered access, the required/narrowing parameter roles, and the sibling alternative are all covered, leaving nothing an agent needs to call correctly unstated.

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 description coverage is 100%, so baseline is 3, but the description adds real meaning: it notes service is required, endpoint optionally narrows the operation, and explains responseFormat='compact' delivers 'tokenizer-measured context savings' while the default returns the full brief plus compact form. This goes beyond the schema's terse enum 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?

States a specific verb (Compile) and resource (one callable third-party API brief), then enumerates exactly what the brief contains: base URL, auth scheme, required parameters and types, request body, and documented response codes. It also explicitly names the sibling factreason_api_schema as the alternative, so an agent can distinguish the two without opening 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?

Provides clear context (service required, endpoint narrows the operation) and an explicit alternative with its selecting condition: 'Prefer factreason_api_schema when exploring multiple endpoints.' It lacks explicit when-not conditions or prerequisites beyond this, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

factreason_package_upgrade_advisoryPackage upgrade advisoryA
Read-onlyIdempotent
Inspect

Compare two exact published npm or PyPI versions and return publisher-declared registry metadata changes, including yanks, exports, module format, runtime floors, peers, and licences, with before/after evidence. Set responseFormat="compact" for tokenizer-measured context savings; the backward-compatible default is "full". This is a read-only metered lookup; misses are never billed and every API key carries one-off trial credit. Use it for package metadata; use factreason_api_breaking_changes for a third-party HTTP API, and consult changelogs for behavioural changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesExact target version, e.g. "5.0.0"
fromYesExact currently installed version, e.g. "4.1.2"
nameYesExact package name, e.g. "chalk" or "urllib3"
apiKeyNoYour FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.
registryYesRegistry containing both package versions
responseFormatNoUse compact to remove repeated prose and fields while retaining evidence; full preserves the legacy response contractfull

Output Schema

ParametersJSON Schema
NameRequiredDescription
foundNo
scopeNo
billedNo
messageNo
toVersionNo
advisoriesNo
fromVersionNo
packageNameNo
tokenMetricsNo
advisoryCountNo
breakingCountNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), but the description adds genuinely new context: metered read-only billing, misses never billed, one-off trial credit per key, and that 'compact' is tokenizer-measured while 'full' preserves the legacy contract. It also scopes the answer to publisher-declared registry metadata, warning the agent off behavioural inference. It stops short of describing failure modes for an unpublished or nonexistent version pair.

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?

Front-loaded with the purpose sentence, then format guidance, then billing terms, then sibling routing – each block earns its place. It is denser than ideal, packing four distinct concerns into one paragraph, but nothing is redundant.

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?

Output schema exists so return values need no explanation, annotations carry the safety profile, and the description supplies the remaining decision-critical pieces: sibling routing, response format tradeoff, and billing/auth context. An agent has everything needed to call it correctly.

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?

Schema description coverage is 100%, so the schema already documents all six parameters including the responseFormat enum and the apiKey/Authorization interplay. The description's 'exact published versions' phrasing reinforces the from/to semantics and frames compact vs full as a context-cost tradeoff, but adds little syntax or format detail beyond what the schema states.

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 (compare) and resource (two exact published npm or PyPI versions) and enumerates the exact output surface (yanks, exports, module format, runtime floors, peers, licences) with before/after evidence. It also explicitly distinguishes itself from the sibling factreason_api_breaking_changes, so an agent can route without opening 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('use it for package metadata'), names the competing sibling and the condition that selects it ('for a third-party HTTP API'), and adds a further exclusion ('consult changelogs for behavioural changes'). That is when/when-not/alternatives in one sentence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

factreason_subscribe_spec_changesWatch a specificationA
Idempotent
Inspect

Create a persistent specification watch for one service; a Bearer API key is required and each key may hold up to 50 watches. Without webhookUrl, read future events from the polling endpoint; with a public HTTP(S) URL, FactReason sends signed POST callbacks after later spec changes. Duplicate or unsafe webhook registrations are rejected. This does not ingest a specification immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoYour FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.
webhookUrlNoOptional public HTTP(S) URL for signed change callbacks; omit to poll
serviceNameYesService name to watch, e.g. "Stripe" or "SendGrid"

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
watchNo
successNo

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations, it discloses the Bearer API key requirement, a concrete 50-watch-per-key quota, the dual webhook/polling event delivery model with signed POST callbacks, rejection of duplicate/unsafe registrations, and the non-immediate-ingest caveat. This is rich operational context the annotations alone do not convey.

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?

Roughly four sentences, all front-loaded and information-dense with no filler. The auth and quota constraints come first, followed by the behavioral branch, which is a sensible ordering.

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?

With an output schema present, the description need not explain return values, and it still covers auth, quota, delivery mode, and the ingest exclusion. Nothing an agent needs to invoke this correctly is missing.

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?

Schema description coverage is 100%, so the schema already documents all three parameters, including that webhookUrl defaults to polling. The description largely restates this dual-mode behavior with only marginal added phrasing ('read future events from the polling endpoint'), so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource: 'Create a persistent specification watch for one service.' This clearly distinguishes it as a watch/subscribe action rather than the scan or schema siblings, though it never names an alternative tool to differentiate itself explicitly.

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?

It gives a clear condition for the webhook vs polling branch ('Without webhookUrl... with a public HTTP(S) URL...') and adds an exclusion ('This does not ingest a specification immediately'). It stops short of naming sibling tools or the scenario that would favor them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 10 tool updates
    • Changedfactreason_api_breaking_changes1 field changed
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "Your FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedfactreason_api_schema1 field changed
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "Your FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedfactreason_auth_playbook1 field changed
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "Your FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedfactreason_component_spec1 field changed
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "Your FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedfactreason_create_topup_link1 field changed
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "Your FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedfactreason_deprecation_scan1 field changed
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "Your FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedfactreason_discover_api1 field changed
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "Your FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedfactreason_integration_brief1 field changed
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "Your FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedfactreason_package_upgrade_advisory1 field changed
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "Your FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedfactreason_subscribe_spec_changes1 field changed
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "Your FactReason API key, from factreason_create_key. Pass it here when your MCP client cannot set the Authorization: Bearer header on this connection; if the header is set, omit this. Never pass a key that belongs to someone else.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
  2. 1 tool update
    • Addedfactreason_create_key
  3. 3 tool updates
    • Changedfactreason_component_spec6 fields changed
      • addedInput schema / properties / responseFormat
        Added value: +{
        +  "default": "full",
        +  "description": "Use compact for an exact part lookup; full preserves the legacy data response",
        +  "enum": [
        +    "full",
        +    "compact"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / properties / compact / additionalProperties
        Removed value: -true
      • changedOutput schema / properties / compact / type
        Previous value: -"object"New value: +"string"
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
      • addedOutput schema / properties / qualityScore
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / tokenMetrics
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "compactTokens": {
        +      "type": "number"
        +    },
        +    "encoding": {
        +      "const": "o200k_base",
        +      "type": "string"
        +    },
        +    "fullTokens": {
        +      "type": "number"
        +    },
        +    "reductionPct": {
        +      "type": "number"
        +    },
        +    "savedTokens": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfactreason_integration_brief4 fields changed
      • addedInput schema / properties / responseFormat
        Added value: +{
        +  "default": "full",
        +  "description": "Use compact for the callable facts only; full preserves the legacy brief response",
        +  "enum": [
        +    "full",
        +    "compact"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / properties / compact / additionalProperties
        Removed value: -true
      • changedOutput schema / properties / compact / type
        Previous value: -"object"New value: +"string"
      • addedOutput schema / properties / tokenMetrics
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "compactTokens": {
        +      "type": "number"
        +    },
        +    "encoding": {
        +      "const": "o200k_base",
        +      "type": "string"
        +    },
        +    "fullTokens": {
        +      "type": "number"
        +    },
        +    "reductionPct": {
        +      "type": "number"
        +    },
        +    "savedTokens": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfactreason_package_upgrade_advisory3 fields changed
      • addedInput schema / properties / responseFormat
        Added value: +{
        +  "default": "full",
        +  "description": "Use compact to remove repeated prose and fields while retaining evidence; full preserves the legacy response contract",
        +  "enum": [
        +    "full",
        +    "compact"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / advisoryCount
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / tokenMetrics
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "compactTokens": {
        +      "type": "number"
        +    },
        +    "encoding": {
        +      "const": "o200k_base",
        +      "type": "string"
        +    },
        +    "fullTokens": {
        +      "type": "number"
        +    },
        +    "reductionPct": {
        +      "type": "number"
        +    },
        +    "savedTokens": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
  4. 10 tool updates
    • Changedfactreason_api_breaking_changes8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / fromVersion / description
        Previous value: -"Optional: version currently targeted"New value: +"Optional exact version currently targeted"
      • addedInput schema / properties / fromVersion / minLength
        Added value: +1
      • changedInput schema / properties / service / description
        Previous value: -"Service name, e.g. \"Stripe\", \"OpenAI\", \"Supabase\""New value: +"Third-party API service, e.g. \"Stripe\" or \"OpenAI\""
      • addedInput schema / properties / service / minLength
        Added value: +1
      • changedInput schema / properties / toVersion / description
        Previous value: -"Optional: version being upgraded to"New value: +"Optional exact version being evaluated"
      • addedInput schema / properties / toVersion / minLength
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "alternatives": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "billed": {
        +      "type": "boolean"
        +    },
        +    "changeCount": {
        +      "type": "number"
        +    },
        +    "changes": {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "meaning": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "service": {
        +      "type": "string"
        +    },
        +    "suggestion": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfactreason_api_schema6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / query / description
        Previous value: -"Endpoint path or operation, e.g. \"payment_intents\", \"chat/completions\""New value: +"Optional endpoint path or operation, e.g. \"payment_intents\""
      • addedInput schema / properties / query / minLength
        Added value: +1
      • changedInput schema / properties / service / description
        Previous value: -"Service name, e.g. \"Stripe\""New value: +"Optional service filter, e.g. \"Stripe\""
      • addedInput schema / properties / service / minLength
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "hint": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "nearestServices": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "totalMatched": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfactreason_auth_playbook4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / service / description
        Previous value: -"Service name, e.g. \"Stripe\", \"Twilio\", \"Cloudflare\""New value: +"Third-party API service, e.g. \"Stripe\", \"Twilio\", or \"Cloudflare\""
      • addedInput schema / properties / service / minLength
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "compact": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "nearestServices": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "playbook": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfactreason_component_spec7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "partNumber"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "query"
        +    ]
        +  }
        +]
      • changedInput schema / properties / partNumber / description
        Previous value: -"Exact part number, e.g. \"STM32F401RE\", \"ESP32-WROOM-32E\""New value: +"Exact part number, e.g. \"STM32F401RE\""
      • addedInput schema / properties / partNumber / minLength
        Added value: +1
      • changedInput schema / properties / query / description
        Previous value: -"Alternative: free-text search, e.g. \"3.3V ARM MCU with SPI\""New value: +"Free-text capability search, e.g. \"3.3V ARM MCU with SPI\""
      • addedInput schema / properties / query / minLength
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "compact": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "data": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "hint": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "nearestMatches": {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "partNumber": {
        +      "type": "string"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "totalMatched": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfactreason_create_topup_link5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / amountUsd / description
        Previous value: -"Amount of credit to purchase in USD, between 1 and 1000. Common blocks: 10, 50, 200."New value: +"Credit amount in USD; common blocks are 10, 50, and 200"
      • addedInput schema / properties / amountUsd / maximum
        Added value: +1000
      • addedInput schema / properties / amountUsd / minimum
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "amountUsd": {
        +      "type": "number"
        +    },
        +    "balanceUrl": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "checkoutUrl": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "createKeyUrl": {
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "created": {
        +      "type": "boolean"
        +    },
        +    "error": {
        +      "type": "string"
        +    },
        +    "instructions": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfactreason_deprecation_scan7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / endpoints / description
        Previous value: -"Optional list of endpoint paths to check, e.g. [\"v1/charges\", \"v1/customers\"]"New value: +"Optional endpoint paths to check within the selected service"
      • addedInput schema / properties / endpoints / items / minLength
        Added value: +1
      • addedInput schema / properties / endpoints / minItems
        Added value: +1
      • changedInput schema / properties / service / description
        Previous value: -"Optional: filter by service name, e.g. \"Stripe\", \"Twilio\""New value: +"Optional service filter, e.g. \"Stripe\" or \"Twilio\""
      • addedInput schema / properties / service / minLength
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "count": {
        +      "type": "number"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfactreason_discover_api4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / capability / description
        Previous value: -"What you need to do, e.g. \"send an SMS\", \"charge a card\", \"upload a file\""New value: +"Capability to search for, e.g. \"send an SMS\" or \"charge a card\""
      • addedInput schema / properties / capability / minLength
        Added value: +2
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "billed": {
        +      "type": "boolean"
        +    },
        +    "capability": {
        +      "type": "string"
        +    },
        +    "count": {
        +      "type": "number"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "hint": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "nextStep": {
        +      "type": "string"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfactreason_integration_brief6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / endpoint / description
        Previous value: -"Optional: narrow to endpoints matching this path or operation, e.g. \"payment_intents\", \"messages\""New value: +"Optional path or operation fragment used to select one call"
      • addedInput schema / properties / endpoint / minLength
        Added value: +1
      • changedInput schema / properties / service / description
        Previous value: -"Service name, e.g. \"Stripe\", \"Twilio\", \"Cloudflare\""New value: +"Third-party API service, e.g. \"Stripe\" or \"Twilio\""
      • addedInput schema / properties / service / minLength
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "billed": {
        +      "type": "boolean"
        +    },
        +    "brief": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "compact": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "hint": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "nearestServices": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "service": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfactreason_package_upgrade_advisory9 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / from / description
        Previous value: -"Version currently installed, e.g. \"4.1.2\""New value: +"Exact currently installed version, e.g. \"4.1.2\""
      • addedInput schema / properties / from / minLength
        Added value: +1
      • changedInput schema / properties / name / description
        Previous value: -"Package name, e.g. \"chalk\", \"urllib3\""New value: +"Exact package name, e.g. \"chalk\" or \"urllib3\""
      • addedInput schema / properties / name / minLength
        Added value: +1
      • changedInput schema / properties / registry / description
        Previous value: -"Which registry the package is published on"New value: +"Registry containing both package versions"
      • changedInput schema / properties / to / description
        Previous value: -"Version you intend to upgrade to, e.g. \"5.0.0\""New value: +"Exact target version, e.g. \"5.0.0\""
      • addedInput schema / properties / to / minLength
        Added value: +1
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "advisories": {
        +      "items": {
        +        "additionalProperties": true,
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "billed": {
        +      "type": "boolean"
        +    },
        +    "breakingCount": {
        +      "type": "number"
        +    },
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "fromVersion": {
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "packageName": {
        +      "type": "string"
        +    },
        +    "scope": {
        +      "type": "string"
        +    },
        +    "toVersion": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfactreason_subscribe_spec_changes7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / serviceName / description
        Previous value: -"Service name to watch, e.g. \"Stripe\", \"SendGrid\""New value: +"Service name to watch, e.g. \"Stripe\" or \"SendGrid\""
      • addedInput schema / properties / serviceName / maxLength
        Added value: +200
      • addedInput schema / properties / serviceName / minLength
        Added value: +1
      • changedInput schema / properties / webhookUrl / description
        Previous value: -"Optional HTTP POST webhook URL to receive notifications"New value: +"Optional public HTTP(S) URL for signed change callbacks; omit to poll"
      • addedInput schema / properties / webhookUrl / format
        Added value: +"uri"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "error": {
        +      "type": "string"
        +    },
        +    "success": {
        +      "type": "boolean"
        +    },
        +    "watch": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "createdAt": {
        +          "type": "string"
        +        },
        +        "id": {
        +          "type": "string"
        +        },
        +        "serviceName": {
        +          "type": "string"
        +        },
        +        "webhookUrl": {
        +          "format": "uri",
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
  5. 10 tool updates
    • First observedfactreason_api_breaking_changes
    • First observedfactreason_api_schema
    • First observedfactreason_auth_playbook
    • First observedfactreason_component_spec
    • First observedfactreason_create_topup_link
    • First observedfactreason_deprecation_scan
    • First observedfactreason_discover_api
    • First observedfactreason_integration_brief
    • First observedfactreason_package_upgrade_advisory
    • First observedfactreason_subscribe_spec_changes

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI coding agents to identify exactly what broke between two dependency versions, with citations for every claim, and to verify package existence to catch typosquatting, all without requiring an API key.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI coding agents to verify, compare, and safely upgrade npm packages by scoring packages from public signals and sandboxed co-installation, detecting breaking API surface changes, and rewriting code that upgrades break.
    29 npm
    8
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.