SaaS Stack Detector
How Tamperbox reads public TXT records for service-verification tokens and SPF senders without claiming that an account is active.
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.
What the tool answers
Section titled “What the tool answers”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.
Inputs
Section titled “Inputs”Accepted source
Section titled “Accepted source”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.
When work runs
Section titled “When work runs”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.
Reading the result
Section titled “Reading the result”Verdict and privacy
Section titled “Verdict and privacy”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 and evidence
Section titled “Findings and evidence”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 and handoffs
Section titled “History and handoffs”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.
Method
Section titled “Method”Validation and collection
Section titled “Validation and collection”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.
Classification rules
Section titled “Classification rules”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.
Ordering and export
Section titled “Ordering and export”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.
Standards and conformance
Section titled “Standards and conformance”Applied specifications
Section titled “Applied specifications”| 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.
Where conformance stops
Section titled “Where conformance stops”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 reference
Section titled “Finding reference”Emitted findings
Section titled “Emitted findings”| 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 handling
Section titled “Status handling”| 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 |
Verify independently
Section titled “Verify independently”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.
Repair safely
Section titled “Repair safely”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.
Diagnose conflicting evidence
Section titled “Diagnose conflicting evidence”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.
Break it and heal it
Section titled “Break it and heal it”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.
Worked example
Section titled “Worked example”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.
For agents
Section titled “For agents”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.
Limits
Section titled “Limits”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.
References
Section titled “References”- RFC 1034, Domain Names — Concepts and Facilities, especially section 4.3.2 for resolver behavior.
- RFC 1035, Domain Names — Implementation and Specification, especially section 3.2.1 for resource-record types and classes.
- RFC 9110, HTTP Semantics, especially section 3.7 for intermediaries and section 15 for status codes when HTTP evidence is collected.
- Tamperbox SaaS Stack Detector, the interactive tool and current Markdown mirror.