Skip to content

SaaS Stack Detector

How Tamperbox reads public TXT records for service-verification tokens and SPF senders without claiming that an account is active.

Open Markdown

The tool page is tamperbox.dev/saas-stack. It opens with a live lookup of mozilla.org; replace it to inspect your own target. This guide documents the actual input path, evidence contract, classifications and independent verification steps.

Where processing happens: input cleanup, pasted-data parsing and report rendering happen in the browser. Live checks send only the validated public target to the Tamperbox server and the public services required for the lookup. The page stores no report; History is local to the current browser session.

The checker answers which catalogued services are suggested by public TXT verification records and which mail senders an SPF record names. Its conclusion is deliberately narrower than an ownership or security claim. A displayed provider, product, name or passing check means that the listed public evidence matched a documented rule at the observation time.

Every conclusion is paired with evidence. The opening verdict is a summary for orientation, while Findings contains the actionable interpretation and the later result sections retain the underlying records, addresses, fields or names. If a conclusion matters operationally, verify that evidence through an authoritative account or an independent standards-aware client before changing production.

Enter a domain for a public TXT lookup, or paste TXT records for local analysis. Text containing a verification-token separator, quotes or multiple lines is interpreted as record material. The parser separates service verification patterns from SPF sender clues. Neither kind proves an active account or contractual relationship.

Text files are read in the browser. The resulting input follows the same classification rules as the field; reading a file locally does not make a domain or public-IP lookup offline. Cleanup keeps an already accepted record intact and otherwise tries unwrapping a single-line address. Unusable text remains visible for correction.

Domain input runs after a 600-millisecond typing pause. Enter runs it immediately; pasted records run immediately. Drops and page-wide paste use the same input loader. Leaving the field applies cleanup and reruns only when cleanup changes the text. Each edit aborts the previous request and increments a generation marker. A slower old response therefore cannot replace a newer result, and clearing the source immediately clears copyable output.

The opening input uses the same parser and processing path as a replacement. The labelled live default sends the same requests as another domain.

The verdict states what the available evidence supports and uses pass, check, fail or informational status consistently. Pass means the bounded rule succeeded. Check means a human should confirm context. Fail means a concrete operational rule was violated. Info describes a limitation, absence or neutral fact and must not be promoted into success or failure by an automated reader.

Two privacy lines distinguish browser-only work from live lookup work. The Checked line names the cleaned input and source mode. Pending, error and empty states clear the previous evidence, so the report always belongs to the current completed lookup. The verdict leads directly into the findings; there is no separate whole-report export.

Findings are ordered with failures first, then checks, informational notes and passes. Repeated passing details can fold into a disclosure so that exceptions remain visible. Each item states the observation and its consequence; any remediation is scoped to the evidence rather than presented as a universal configuration recipe.

Evidence sections follow Findings and precede History. They are the audit trail for the verdict. A provider label derived from a catalog remains an inference, while a literal record or response field remains an observation. This distinction matters when signatures are incomplete, white-labelled or stale.

History records intentional input replacements, including Break it examples and their repairs. Revert restores the prior input and runs it again, including live requests when applicable; Reset input returns to the value at the beginning of the recorded sequence. History is not monitoring, persistence or an account log.

Check the rest opens related tools without carrying input. Take it further sends the first recognised SPF record to the SPF Checker for its syntax and lookup-budget analysis. It is hidden when no SPF record is present. The initial handoff is a pasted record; any optional follow-up lookup follows that tool’s processing rules. Each receiving tool runs its own check; agreement is not guaranteed.

Result actions transfer their explicit derived values through temporary browser sessionStorage and, when needed, a same-origin browser channel. The URL fragment contains a random transfer token, not the input. Transfers are accepted for less than one minute, consumed once, and bound to the destination path. The destination removes the token from its address. Ordinary documentation links and direct visits do not restore a previous input; if transfer storage is unavailable, the link still opens the tool.

Before collection, the same domain validation runs in the browser and on the server boundary. Requests are restricted to supported public DNS names and HTTPS roots, redirects are bounded, response sizes are capped and abort signals are propagated. These limits make the observation reproducible and prevent an entered value from becoming an unrestricted network fetch.

Use the input modes above to determine which requests run. DNS evidence comes from a public recursive view and can reflect cache state. Local classification cannot add observations absent from the supplied evidence. A server lookup is a fresh observation, not confirmation that cached or pasted evidence is still current.

TXT values are split without inventing record boundaries. The detector compares prefixes case-insensitively with a bounded catalog, groups matches by service, extracts SPF include and redirect domains, and keeps unrecognised token-shaped values separate. It never treats arbitrary prose as a service. RFC 1035 section 3.2.1 defines TXT as one or more character strings; joining and display preserve the evidence rather than interpreting it as authority.

No confidence percentage is invented. When sources disagree, the disagreement is a finding. When a source is unavailable, the affected conclusion becomes informational or inconclusive rather than silently using a previous result. Catalog matches are exact bounded rules; unknown is a valid outcome.

The renderer calculates all findings from the current observation before updating the verdict, chips, evidence and landing cards. Status priority is fail, check, info, pass. Stable secondary ordering keeps repeated runs readable without changing severity.

The Markdown mirror documents the tool’s method, findings and limitations in text form. It does not contain your entered input, live lookup results, browser state or expanded educational cards. Select the evidence you need from the current result when preparing a report. Agents should cite the observation time and limitation alongside any exported conclusion.

Source Rule used Boundary
RFC 1035 section 3.2.1 TXT carries one or more character strings The resolver supplies joined values; pasted lines are treated as observations
RFC 7208 section 4.6.4 SPF include and redirect cause DNS evaluation The tool lists sender domains but does not evaluate authorization
RFC 1034 section 4.3.2 Resolver answers can be cached and recursive Results describe one public lookup, not every resolver

These references define the records and message semantics, not the provider catalogs. A catalog is product logic and can lag branding, acquisitions or custom deployments. Where a standard permits several valid configurations, the tool reports the observed form and avoids declaring one commercial pattern universally correct.

The checker is an observer, not an authoritative DNS server, browser, certificate monitor, mail receiver or provider control plane. It does not claim protocol conformance for the target. It applies selected validation and interpretation rules to bounded evidence and exposes the boundary where a fuller protocol operation would begin.

The phrase “public” refers to the server’s Internet view. Private split-horizon answers, authenticated dashboards and regional routing can differ. Cached answers can remain until TTL expiry, and HTTP intermediaries can transform what the origin sent.

Finding Severity Meaning Repair or next check
Recognised service Pass A public token matches the catalog Confirm the token in that vendor’s admin console
Multiple tokens for one service Check Migration or stale verification may have left duplicates Verify ownership, then remove only a vendor-confirmed obsolete token
Mail sender Info SPF names a domain that may send mail Use SPF Checker before changing authorization
Not in the catalog Info The value resembles verification but has no known signature Search the exact prefix in trusted vendor documentation
No known services Info No catalog signature matched Check CNAME and subdomain verification separately

Wording can include the observed name, count, provider or status. Automated consumers should use the supplied status and evidence rather than parsing the English title as a permanent identifier. A missing finding is not evidence that the corresponding external condition is absent when its source could not be collected.

Status Consumer action What not to infer
Pass Preserve the evidence and continue normal review Permanent correctness, ownership or availability
Check Confirm intent and inspect the named evidence Definite compromise or outage
Fail Prioritise the concrete broken rule and verify independently That every user sees the same failure
Info Carry the limitation or neutral fact with the report Success merely because no failure was emitted

Start with an authoritative or widely used command-line client. For DNS, use dig with the exact record type and compare every returned owner, target and TTL. Add +trace only when delegation matters; a trace and a recursive answer solve different questions. For HTTPS, use curl -I --location https://host/ and retain each hop and response field. For certificates, use an established TLS client and a CT monitor you trust.

Repeat from another network when geography or split routing could matter. Save the observation time and the original evidence before editing. After a DNS change, wait at least the prior TTL and then query both the intended authorities and independent recursive resolvers.

Do not delete an unfamiliar record or reroute a public name merely because a catalog labels it. First identify the owning service, deployment repository or provider account. Confirm whether the item is current, a migration remnant, a failover path or a delegated responsibility. Make the smallest reversible change, keep the prior value, and have a rollback trigger.

Re-run this page after propagation, then verify the user-visible service. A clean public lookup cannot prove application health. Conversely, an informational unknown does not require a speculative change.

When two signals disagree, ask whether they describe different layers: apex versus www, resolver cache versus authority, CDN edge versus origin, entered host versus redirected host, or certificate history versus current DNS. Compare literal evidence before comparing labels. The disagreement itself often reveals a migration or intermediary.

If a lookup fails, preserve the error and retry once. Repeated timeouts are not equivalent to empty data. Use the specialist tool linked by the finding for deeper parsing rather than converting an inconclusive aggregate result into a failure.

Result cards name the recognised service and SPF sender clues and count records and unrecognised tokens. These values describe the supplied records, not verified accounts or a complete software inventory. Multiple tokens can be legitimate; confirm each one with its service owner before removal.

The Break it controls create documented edge cases from the visitor’s own input or a reserved fixture. They are teaching states, not scans. Heal it restores a safe derived value when the repair is deterministic. Revert remains available when several changes have been made.

Use these cases to learn how invalid, missing, mixed or stale evidence appears before diagnosing production. The control never edits DNS, hosting, certificates or provider accounts.

The live default is mozilla.org. At the comparison point it populated recognised services, SPF senders and unknown-token evidence, making the whole report inspectable. The records can change; the example is selected for structural coverage, not as an enduring claim about Mozilla.

Read the example from verdict to Findings, then compare the literal evidence. Open one Break it case and use Heal it or Revert. Finally, replace the default with a domain you are authorised to assess. This sequence demonstrates both the successful path and the failure contract without implying that the named public domain endorses the tool.

Agents can discover the saas_stack operation through Tamperbox MCP. The browser page id saas-stack is not the operation name. The server operation and browser renderer can expose different fields; inspect the operation schema before supplying arguments. Preserve the result’s distinction between observed evidence, catalog inference and limitation. State whether the run was live or pasted, include the cleaned target and observation time, and never turn “not found” into “does not exist” unless the method truly establishes that condition.

Choose a specialist operation when the task is narrow. Use this page’s report when its combined view or educational findings add value. Do not pass credentials, private hostnames or customer data into a public lookup. If a repair would change production, present the exact evidence, expected effect, propagation window and rollback before acting.

Machine readers should branch on status and structured fields where available, not English punctuation. Treat network and parse errors as inconclusive. Re-run after a meaningful interval rather than repeatedly polling a third-party source.

The catalog is intentionally finite. Services may verify with CNAME, files, meta tags, delegated subdomains or private account state, none of which a bare-domain TXT lookup sees. Tokens can remain after cancellation or be copied, so a match is a clue rather than proof of ownership, billing, activity or compromise.

All outputs are point-in-time observations. Resolver caching, negative caching, anycast, geo steering, redirects and intermittent upstream failures can change a later run. The service does not retain a monitoring history or notify on change. Local History is an interaction aid, not durable evidence.

No result grants permission to probe a target or modify it. Use authorised accounts and owner-approved procedures for deeper checks. Where business, security or legal decisions depend on attribution, obtain confirmation from the responsible provider or domain operator.