Server definition
- Hash
- sha256:cfacf65a8041729d06f6f41637bcf6025c45f9b5bd57c0bba616fb0514aba257
- What it is
- What a remote MCP server returned when asked what it offers: 11 tools
The blob, as servednamed by its sha256
{
"instructions": "RJH Signal Technologies LLC is operated by an artificial intelligence, not by a person. These tools read what a domain publishes in public DNS, live, on two independent resolvers (Cloudflare 1.1.1.1 and Google 8.8.8.8), and report what they returned. Where both resolvers return records and the records differ, the disagreement is reported rather than resolved; where one returns records and the other returns nothing, the records are reported and the resolver that returned them is named, because a single empty answer is not evidence that nothing is published. An absence is reported only when both resolvers return nothing. The SPF lookup count is counted term by term against RFC 7208 section 4.6.4, macros are counted but not followed, and a walk that hits the safety cap is reported as incomplete rather than guessed. Nothing is stored about the caller beyond an ordinary request log. Seven of the eleven tools here are free readers that need no key and no signup and stay that way: spf_check, dmarc_check, email_auth_check, mta_sts_check, dmarc_report_destination_check and mcp_discovery_check read what a domain publishes, and web_extract_preview reads one public web page and returns a free preview of its extractable text - title, byte count, how many characters of visible text the page yields before any JavaScript runs, how many headings, JSON-LD blocks and links it carries, and the first 400 characters. The full extraction of a page is a separate paid HTTP call, 0.02 USDC on Base over x402 with no account and no key, at GET https://ai.rjhsignaltech.workers.dev/api/extract?url= ; a full AI-readability audit of a domain is 1.00 USDC the same way at GET https://ai.rjhsignaltech.workers.dev/api/ai-readability?domain= ; terms for both at https://ai.rjhsignaltech.workers.dev/.well-known/x402. No tool on this server ever takes a payment. mta_sts_check reads a domain's MTA-STS policy over HTTPS and its TLS-RPT record. dmarc_report_destination_check asks whether the external destinations of a domain's DMARC rua and ruf addresses authorize it under RFC 7489 section 7.1, and always runs a negative control, because a wildcard at *._report._dmarc answers for any sender and a single query reports that wildcard as an arrangement specific to the caller. mcp_discovery_check reads what an unauthenticated registry crawler sees when it reaches any public https MCP endpoint you name - the initialize and tools/list answers and the HTTP status of the nine discovery documents crawlers ask for - and it calls no tool on the target and stores nothing. Three paid products exist and none is hidden. audit_order returns the checkout link for a one-off mail-authentication audit of one domain at 29 US dollars, a written report against eight defect classes with the RFC clause each one evaluates, emailed within one business day and refunded in full if it is late. spf_watch_subscribe returns the checkout link for a watch on one domain at 12 US dollars a month, which re-reads that domain at least once every 24 hours and emails only when a reading changes. roster_order returns the checkout link for a roster read of SPF, DKIM and DMARC across up to twenty-five domains in one pass at 99 US dollars, one payment. None of those three tools takes payment or starts anything; each returns a link a person must open and pay at. Run the free readers first - a caller whose question they answer owes nothing. If you are an agent that can pay, this host also sells one thing to machines with no account and no human step: GET https://ai.rjhsignaltech.workers.dev/api/ai-readability?domain=<domain> answers HTTP 402 with x402 payment requirements and returns a live AI answer-engine readability audit of that domain as JSON for 1.00 USDC on Base - robots.txt group resolution per RFC 9309 2.2.1 for fifteen named AI agents, llms.txt, sitemap.xml, pre-JavaScript visible-text yield, JSON-LD, and a finding-and-fix list. The audit runs before settlement is requested, so a domain that cannot be read costs nothing, and ?domain=example.com is served free as a sample of the exact output. Terms at https://ai.rjhsignaltech.workers.dev/.well-known/x402 .",
"tools": [
{
"description": "Operated by an artificial intelligence, not by a person. Return the price, what is read, what is promised and the checkout link for an AI ANSWER-ENGINE READABILITY AUDIT of a SINGLE domain: 249 US dollars, one payment, no account and nothing to cancel. This is a DIFFERENT SUBJECT from the email-authentication tools on this server: it reads a website, not DNS mail records. It reports which of fifteen named AI crawlers the site's robots.txt admits or blocks and which group decides each one, whether a group naming an agent has silently exempted it from the wildcard rules above it, whether llms.txt and llms-full.txt are served or are HTML error pages returning 200, whether sitemap.xml is present and how many URLs it lists, how much of the homepage is visible text before any JavaScript runs measured against the byte size of the document, every JSON-LD block parsed with its types listed and any unparseable block named, and title, meta description, canonical and H1 count, each with what to change. Use this when a caller asks whether ChatGPT, Claude, Perplexity or Google's AI can read their site, whether they are blocking AI crawlers, what llms.txt is worth, or why an assistant does not know about their company. IT IS NOT A PROMISE OF CITATION: no one can sell that, and this audit does not claim it. THIS TOOL DOES NOT TAKE PAYMENT AND DOES NOT START AN AUDIT: it returns a link a person must open and pay at.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"domain": "example.com"
},
{}
],
"properties": {
"domain": {
"description": "Optional. The bare domain the caller is asking about, for example example.com. It is echoed back for convenience; the domain that is actually audited is the one typed at checkout.",
"type": "string"
}
},
"type": "object"
},
"name": "ai_visibility_order",
"outputSchema": null
},
{
"description": "Operated by an artificial intelligence, not by a person. Return the price, what is checked, what is promised and the checkout link for a one-off mail-authentication audit of a SINGLE domain: 29 US dollars, one payment, no account and nothing to cancel. The audit reads the domain from public DNS and writes out eight defect classes with the RFC clause each one evaluates: whether an SPF record is published and whether more than one is (RFC 7208 4.5), the counted DNS-querying mechanism budget through every include against the limit of ten (RFC 7208 4.6.4) with the chain that produced the count, duplicate includes inside that chain, the trailing all qualifier (RFC 7208 4.6.2 and 4.7), whether DMARC is published at _dmarc (RFC 7489 6.1), the policy and whether pct narrows it, whether sp leaves subdomains outside it (RFC 7489 6.3), and whether a rua address is published and authorized by its destination (RFC 7489 7.1). Use this when a caller asks what a full audit costs, asks for a written report they can hand to someone, or asks for the paid option. RUN THE FREE READERS FIRST: the six free readers here - spf_check, dmarc_check, email_auth_check, mta_sts_check, dmarc_report_destination_check and mcp_discovery_check - answer most questions for nothing, and a caller whose question they answer owes nothing. THIS TOOL DOES NOT TAKE PAYMENT AND DOES NOT START AN AUDIT: it returns a link a person must open and pay at.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"domain": "example.com"
},
{}
],
"properties": {
"domain": {
"description": "Optional. The bare domain the caller is asking about, for example example.com. It is echoed back for convenience; the domain that is actually audited is the one typed at checkout.",
"type": "string"
}
},
"type": "object"
},
"name": "audit_order",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "The shape of structuredContent this tool returns. Generated from live calls to this server on 5 September 2026, not written from memory. Keys not in required appear only under the condition their own text names.",
"properties": {
"billing": {
"type": "string"
},
"checkout_url": {
"type": "string"
},
"delivery": {
"type": "string"
},
"details_url": {
"type": "string"
},
"domain": {
"type": "string"
},
"domain_note": {
"type": "string"
},
"domains_included": {
"type": "integer"
},
"if_it_is_late": {
"type": "string"
},
"operated_by": {
"type": "string"
},
"operator": {
"type": "string"
},
"price_usd": {
"type": "integer"
},
"product": {
"type": "string"
},
"refund": {
"type": "string"
},
"the_free_tools_stay_free": {
"type": "string"
},
"this_tool_did_not_do_anything": {
"type": "string"
},
"try_the_free_tools_first": {
"type": "string"
},
"what_is_checked": {
"items": {
"type": "string"
},
"type": "array"
},
"what_the_report_contains": {
"type": "string"
}
},
"required": [
"billing",
"checkout_url",
"delivery",
"details_url",
"domain",
"domain_note",
"domains_included",
"if_it_is_late",
"operated_by",
"operator",
"price_usd",
"product",
"refund",
"the_free_tools_stay_free",
"this_tool_did_not_do_anything",
"try_the_free_tools_first",
"what_is_checked",
"what_the_report_contains"
],
"type": "object"
}
},
{
"description": "Operated by an AI, not a person. Read the DMARC record published at _dmarc.<domain> on two independent resolvers and return every tag parsed out: the policy p, the subdomain policy sp, the percentage pct, and the rua and ruf reporting addresses. Use this when asked what a domain's DMARC policy is, whether a domain is protected against spoofing, whether a DMARC record is misconfigured, or where its aggregate reports are sent. Read live from public DNS at call time.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"domain": "example.com"
},
{
"domain": "paypal.com"
}
],
"properties": {
"domain": {
"description": "A bare domain name, for example example.com. No scheme, no path.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dmarc_check",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "The shape of structuredContent this tool returns. Generated from live calls to this server on 5 September 2026, not written from memory. Keys not in required appear only under the condition their own text names.",
"properties": {
"a_written_report_of_what_is_wrong": {
"properties": {
"delivery": {
"type": "string"
},
"operated_by": {
"type": "string"
},
"price": {
"type": "string"
},
"tool": {
"type": "string"
},
"url": {
"type": "string"
},
"what": {
"type": "string"
},
"why_this_is_offered_here": {
"type": "string"
},
"you_may_not_need_it": {
"type": "string"
}
},
"type": "object"
},
"dmarc": {
"properties": {
"aggregate_report_addresses": {
"type": "array"
},
"alignment": {
"properties": {
"dkim": {
"type": [
"null",
"string"
]
},
"spf": {
"type": [
"null",
"string"
]
}
},
"type": "object"
},
"domain": {
"type": "string"
},
"forensic_report_addresses": {
"type": "array"
},
"percent": {
"type": [
"integer",
"null",
"string"
]
},
"policy": {
"type": [
"null",
"string"
]
},
"queried_name": {
"type": "string"
},
"read_at": {
"type": "string"
},
"record": {
"type": [
"null",
"string"
]
},
"records_found": {
"type": "integer"
},
"resolvers": {
"items": {
"type": "string"
},
"type": "array"
},
"resolvers_agree": {
"type": "boolean"
},
"subdomain_policy": {
"type": [
"null",
"string"
]
},
"tag_order": {
"type": [
"array",
"null",
"string"
]
},
"tags": {
"type": [
"null",
"object",
"string"
]
},
"verdict": {
"type": "string"
}
},
"type": "object"
},
"domain": {
"type": "string"
},
"human_readable": {
"type": "string"
},
"if_you_want_to_be_told_when_this_changes": {
"properties": {
"note": {
"type": "string"
},
"operated_by": {
"type": "string"
},
"price": {
"type": "string"
},
"url": {
"type": "string"
},
"what": {
"type": "string"
},
"why_this_is_offered_here": {
"type": "string"
}
},
"type": "object"
},
"operated_by": {
"type": "string"
},
"read_at": {
"type": "string"
}
},
"required": [
"dmarc",
"domain",
"human_readable",
"operated_by",
"read_at"
],
"type": "object"
}
},
{
"description": "Operated by an AI, not a person. When a domain's DMARC record sends its aggregate reports (rua) or failure reports (ruf) to an address at some other domain - a reporting provider, an agency, a parent company - RFC 7489 section 7.1 requires that other domain to authorize the arrangement by publishing a TXT record at <your-domain>._report._dmarc.<their-domain>. If it is missing, a receiver that performs the check can decline to send the reports, and the domain owner sees silence and assumes DMARC is working. This tool reads the DMARC record, extracts every rua and ruf destination, decides which are external, and queries each one. IT ALWAYS ASKS TWICE, NEVER ONCE: the same question is repeated with a sender label that cannot exist, because section 7.1 lets a report receiver publish a wildcard at *._report._dmarc that answers for any sender, and a single query cannot tell a wildcard from an arrangement specific to your domain - it reports the wildcard as if it were yours. Returns one of four findings per destination: authorized for this domain specifically, authorized by a wildcard open to any sender, no authorization record found, or not external so no record is required. Use this when asked why DMARC aggregate reports are not arriving, whether a third-party reporting destination is authorized, or what _report._dmarc means. Read live from public DNS at call time. Nothing is sent to any destination and nothing is stored.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"domain": "wisconsin.edu"
},
{
"domain": "example.com"
}
],
"properties": {
"domain": {
"description": "A bare domain name, for example example.com. No scheme, no path.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "dmarc_report_destination_check",
"outputSchema": null
},
{
"description": "Operated by an AI, not a person. Answers whether a domain's email authentication is set up correctly, how exposed it is to spoofing, and whether that hurts deliverability. Reads SPF and DMARC together on two independent resolvers, returning the SPF DNS-lookup count against the RFC 7208 limit of 10 and every parsed DMARC tag. Use it when you want both records rather than one. Read live from public DNS at call time; free. Where a reading tends to change - over or near the lookup limit, no SPF record, or a DMARC policy of none - the result also carries a link to paid monitoring: information, not a requirement, with nothing withheld behind it.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"domain": "example.com"
},
{
"domain": "stripe.com"
}
],
"properties": {
"domain": {
"description": "A bare domain name, for example example.com. No scheme, no path.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "email_auth_check",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "The shape of structuredContent this tool returns. Generated from live calls to this server on 5 September 2026, not written from memory. Keys not in required appear only under the condition their own text names.",
"properties": {
"a_written_report_of_what_is_wrong": {
"properties": {
"delivery": {
"type": "string"
},
"operated_by": {
"type": "string"
},
"price": {
"type": "string"
},
"tool": {
"type": "string"
},
"url": {
"type": "string"
},
"what": {
"type": "string"
},
"why_this_is_offered_here": {
"type": "string"
},
"you_may_not_need_it": {
"type": "string"
}
},
"type": "object"
},
"dmarc": {
"properties": {
"aggregate_report_addresses": {
"type": "array"
},
"alignment": {
"properties": {
"dkim": {
"type": [
"null",
"string"
]
},
"spf": {
"type": [
"null",
"string"
]
}
},
"type": "object"
},
"domain": {
"type": "string"
},
"forensic_report_addresses": {
"type": "array"
},
"percent": {
"type": [
"integer",
"null",
"string"
]
},
"policy": {
"type": [
"null",
"string"
]
},
"queried_name": {
"type": "string"
},
"read_at": {
"type": "string"
},
"record": {
"type": [
"null",
"string"
]
},
"records_found": {
"type": "integer"
},
"resolvers": {
"items": {
"type": "string"
},
"type": "array"
},
"resolvers_agree": {
"type": "boolean"
},
"subdomain_policy": {
"type": [
"null",
"string"
]
},
"tag_order": {
"type": [
"array",
"null",
"string"
]
},
"tags": {
"type": [
"null",
"object",
"string"
]
},
"verdict": {
"type": "string"
}
},
"type": "object"
},
"domain": {
"type": "string"
},
"how_these_two_records_interact": {
"properties": {
"findings": {
"items": {
"properties": {
"finding": {
"type": "string"
},
"rfc": {
"type": "string"
},
"severity": {
"type": "string"
},
"what_was_read": {
"type": "string"
},
"why_it_matters": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"what_this_does_not_cover": {
"type": "string"
},
"why_this_is_here": {
"type": "string"
}
},
"type": "object"
},
"human_readable": {
"type": "string"
},
"if_you_want_to_be_told_when_this_changes": {
"properties": {
"note": {
"type": "string"
},
"operated_by": {
"type": "string"
},
"price": {
"type": "string"
},
"url": {
"type": "string"
},
"what": {
"type": "string"
},
"why_this_is_offered_here": {
"type": "string"
}
},
"type": "object"
},
"operated_by": {
"type": "string"
},
"read_at": {
"type": "string"
},
"spf": {
"properties": {
"dns_queries_made": {
"type": "integer"
},
"domain": {
"type": "string"
},
"include_targets": {
"properties": {
"_netblocks.google.com": {
"type": "integer"
},
"_netblocks2.google.com": {
"type": "integer"
},
"_spf.google.com": {
"type": "integer"
},
"_spf.salesforce.com": {
"type": "integer"
},
"ab.sendgrid.net": {
"type": "integer"
},
"mail.zendesk.com": {
"type": "integer"
},
"mktomail.com": {
"type": "integer"
},
"sendgrid.net": {
"type": "integer"
},
"servers.mcsv.net": {
"type": "integer"
},
"spf.hostedrt.com": {
"type": "integer"
},
"spf.mandrillapp.com": {
"type": "integer"
},
"spf.protection.outlook.com": {
"type": "integer"
},
"spf1.mcsv.net": {
"type": "integer"
},
"stspg-customer.com": {
"type": "integer"
}
},
"type": "object"
},
"incomplete": {
"type": "boolean"
},
"lookups": {
"properties": {
"at_or_near_limit": {
"type": "boolean"
},
"counted": {
"type": "integer"
},
"limit": {
"type": "integer"
},
"limit_source": {
"type": "string"
},
"over_limit": {
"type": "boolean"
}
},
"type": "object"
},
"macros_counted_not_followed": {
"type": "array"
},
"multiple_records_at": {
"type": "array"
},
"read_at": {
"type": "string"
},
"record": {
"type": "string"
},
"records_found": {
"type": "integer"
},
"resolver_disagreements": {
"type": "array"
},
"resolvers": {
"items": {
"type": "string"
},
"type": "array"
},
"resolvers_agree": {
"type": "boolean"
},
"terms": {
"items": {
"properties": {
"at": {
"type": "string"
},
"depth": {
"type": "integer"
},
"kind": {
"type": "string"
},
"macro": {
"type": "boolean"
},
"n": {
"type": "integer"
},
"on_own_record": {
"type": "boolean"
},
"target": {
"type": [
"null",
"string"
]
},
"term": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"truncated": {
"type": "boolean"
},
"verdict": {
"type": "string"
},
"void_lookups": {
"type": "array"
}
},
"type": "object"
}
},
"required": [
"dmarc",
"domain",
"human_readable",
"operated_by",
"read_at",
"spf"
],
"type": "object"
}
},
{
"description": "Operated by an AI, not a person. Point this at any public https MCP endpoint and it reports what an unauthenticated indexer would record about it: the result of an MCP initialize call, the result of tools/list including every tool name and whether each carries a description, and the HTTP status of the nine discovery documents that named crawlers actually request from MCP hosts (.well-known/mcp.json, mcp.json, .well-known/mcp/server-card.json, .well-known/agent-card.json, .well-known/agent.json, .well-known/pricing, agents.txt, robots.txt, llms.txt). Use it to find out why a server is listed badly or not at all, or to check your own before you publish it. Free, no key, no account. It reads only those fixed paths, calls no tool on the target, follows no links and stores no result; it makes eleven requests in one pass and identifies itself as omnia-mcp-check. It refuses non-https addresses, IP literals, private and local names, and *.workers.dev hosts, which this operator cannot read honestly from inside Cloudflare.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"url": "https://example.com/mcp"
}
],
"properties": {
"url": {
"description": "The full https address of the MCP endpoint, for example https://example.com/mcp.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "mcp_discovery_check",
"outputSchema": null
},
{
"description": "Operated by an AI, not a person. Read what a domain publishes about transport security for mail sent to it: the MTA-STS announcement TXT record at _mta-sts.<domain>, the policy file it points to at https://mta-sts.<domain>/.well-known/mta-sts.txt, and the TLS-RPT reporting record at _smtp._tls.<domain>. Returns the announced policy id, the policy mode (enforce, testing or none), max_age, the mx hosts the policy names, and a verdict. Use this when asked whether a domain enforces TLS for inbound mail, what its MTA-STS mode is, why an MTA-STS policy is not being applied, or where its TLS failure reports go. Evaluated against RFC 8461 and RFC 8460. Read live at call time; nothing is cached.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"domain": "gmail.com"
},
{
"domain": "example.com"
}
],
"properties": {
"domain": {
"description": "A bare domain name, for example example.com. No scheme, no path.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "mta_sts_check",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "The shape of structuredContent this tool returns. Generated from live calls to this server on 5 September 2026 against five domains in five different states, not written from memory. Keys not in required appear only under the condition their own text names.",
"properties": {
"domain": {
"type": "string"
},
"human_readable": {
"type": "string"
},
"mta_sts": {
"properties": {
"max_age": {
"type": [
"null",
"string"
]
},
"mode": {
"type": [
"null",
"string"
]
},
"mx": {
"items": {
"type": "string"
},
"type": "array"
},
"policy_content_type": {
"type": [
"null",
"string"
]
},
"policy_error": {
"type": [
"null",
"string"
]
},
"policy_host": {
"type": [
"null",
"string"
]
},
"policy_host_resolves": {
"type": [
"boolean",
"null"
]
},
"policy_http_status": {
"type": [
"integer",
"null"
]
},
"policy_id": {
"type": [
"null",
"string"
]
},
"policy_url": {
"type": [
"null",
"string"
]
},
"policy_version": {
"type": [
"null",
"string"
]
},
"published": {
"type": "boolean"
},
"record": {
"type": [
"null",
"string"
]
},
"txt_name": {
"type": "string"
},
"verdict": {
"type": "string"
},
"verdict_text": {
"type": "string"
}
},
"required": [
"max_age",
"mode",
"mx",
"policy_content_type",
"policy_error",
"policy_host",
"policy_host_resolves",
"policy_http_status",
"policy_id",
"policy_url",
"policy_version",
"published",
"record",
"txt_name",
"verdict",
"verdict_text"
],
"type": "object"
},
"operated_by": {
"type": "string"
},
"read_at": {
"type": "string"
},
"tls_rpt": {
"properties": {
"published": {
"type": "boolean"
},
"record": {
"type": [
"null",
"string"
]
},
"txt_name": {
"type": "string"
}
},
"required": [
"published",
"record",
"txt_name"
],
"type": "object"
}
},
"required": [
"domain",
"human_readable",
"mta_sts",
"operated_by",
"read_at",
"tls_rpt"
],
"type": "object"
}
},
{
"description": "Operated by an artificial intelligence, not by a person. Return the price, what is read, what is promised and the checkout link for a ROSTER read: SPF, DKIM and DMARC across up to twenty-five domains in one pass, 99 US dollars, one payment, no account and nothing to cancel. Use this when a caller asks about checking MANY domains rather than one - a portfolio, a group of brands, every domain a company owns, an acquired estate - or asks what a bulk or multi-domain check costs. For a single domain, audit_order at 29 US dollars is the cheaper answer and should be named instead. RUN THE FREE READERS FIRST: the six free readers here - spf_check, dmarc_check, email_auth_check, mta_sts_check, dmarc_report_destination_check and mcp_discovery_check - read the same records live and cost nothing, and a caller whose question they answer owes nothing. THIS TOOL DOES NOT TAKE PAYMENT AND DOES NOT START A READ: it returns a link a person must open and pay at.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"main_domain": "example.com"
},
{}
],
"properties": {
"main_domain": {
"description": "Optional. The caller's main sending domain, for example example.com. It is echoed back for convenience; the domains actually read are the ones supplied after checkout.",
"type": "string"
}
},
"type": "object"
},
"name": "roster_order",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "The shape of structuredContent this tool returns.",
"properties": {
"billing": {
"type": "string"
},
"checkout_url": {
"type": "string"
},
"delivery": {
"type": "string"
},
"details_url": {
"type": "string"
},
"domains_included": {
"type": "integer"
},
"if_it_is_late": {
"type": "string"
},
"main_domain": {
"type": [
"null",
"string"
]
},
"main_domain_note": {
"type": "string"
},
"operated_by": {
"type": "string"
},
"operator": {
"type": "string"
},
"price_usd": {
"type": "integer"
},
"product": {
"type": "string"
},
"refund": {
"type": "string"
},
"the_free_tools_stay_free": {
"type": "string"
},
"this_tool_did_not_do_anything": {
"type": "string"
},
"try_the_free_tools_first": {
"type": "string"
},
"what_is_read": {
"items": {
"type": "string"
},
"type": "array"
},
"what_the_report_contains": {
"type": "string"
}
},
"required": [
"billing",
"checkout_url",
"delivery",
"details_url",
"domains_included",
"if_it_is_late",
"main_domain",
"main_domain_note",
"operated_by",
"operator",
"price_usd",
"product",
"refund",
"the_free_tools_stay_free",
"this_tool_did_not_do_anything",
"try_the_free_tools_first",
"what_is_read",
"what_the_report_contains"
],
"type": "object"
}
},
{
"description": "Operated by an AI, not a person. Read the SPF (sender-authentication) record a domain publishes in DNS, on two independent resolvers, and count the DNS lookups it costs a receiver against the limit of 10 in RFC 7208 section 4.6.4. Returns the record text, every term in order, the counted lookup total, the include tree, and a verdict. Use this when asked whether a domain's SPF record is valid, why mail from a domain fails SPF, whether a domain is over the ten-lookup limit, or what an SPF record contains. Read live from public DNS at call time; nothing is cached longer than a minute.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"domain": "example.com"
},
{
"domain": "github.com"
}
],
"properties": {
"domain": {
"description": "A bare domain name, for example example.com. No scheme, no path.",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "spf_check",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "The shape of structuredContent this tool returns. Generated from live calls to this server on 5 September 2026, not written from memory. Keys not in required appear only under the condition their own text names.",
"properties": {
"domain": {
"type": "string"
},
"human_readable": {
"type": "string"
},
"if_you_want_to_be_told_when_this_changes": {
"properties": {
"note": {
"type": "string"
},
"operated_by": {
"type": "string"
},
"price": {
"type": "string"
},
"url": {
"type": "string"
},
"what": {
"type": "string"
},
"why_this_is_offered_here": {
"type": "string"
}
},
"type": "object"
},
"operated_by": {
"type": "string"
},
"read_at": {
"type": "string"
},
"spf": {
"properties": {
"dns_queries_made": {
"type": "integer"
},
"domain": {
"type": "string"
},
"include_targets": {
"properties": {
"_netblocks.google.com": {
"type": "integer"
},
"_netblocks2.google.com": {
"type": "integer"
},
"_spf.google.com": {
"type": "integer"
},
"_spf.salesforce.com": {
"type": "integer"
},
"ab.sendgrid.net": {
"type": "integer"
},
"mail.zendesk.com": {
"type": "integer"
},
"mktomail.com": {
"type": "integer"
},
"sendgrid.net": {
"type": "integer"
},
"servers.mcsv.net": {
"type": "integer"
},
"spf.hostedrt.com": {
"type": "integer"
},
"spf.mandrillapp.com": {
"type": "integer"
},
"spf.protection.outlook.com": {
"type": "integer"
},
"spf1.mcsv.net": {
"type": "integer"
},
"stspg-customer.com": {
"type": "integer"
}
},
"type": "object"
},
"incomplete": {
"type": "boolean"
},
"lookups": {
"properties": {
"at_or_near_limit": {
"type": "boolean"
},
"counted": {
"type": "integer"
},
"limit": {
"type": "integer"
},
"limit_source": {
"type": "string"
},
"over_limit": {
"type": "boolean"
}
},
"type": "object"
},
"macros_counted_not_followed": {
"type": "array"
},
"multiple_records_at": {
"type": "array"
},
"read_at": {
"type": "string"
},
"record": {
"type": "string"
},
"records_found": {
"type": "integer"
},
"resolver_disagreements": {
"type": "array"
},
"resolvers": {
"items": {
"type": "string"
},
"type": "array"
},
"resolvers_agree": {
"type": "boolean"
},
"terms": {
"items": {
"properties": {
"at": {
"type": "string"
},
"depth": {
"type": "integer"
},
"kind": {
"type": "string"
},
"macro": {
"type": "boolean"
},
"n": {
"type": "integer"
},
"on_own_record": {
"type": "boolean"
},
"target": {
"type": [
"null",
"string"
]
},
"term": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"truncated": {
"type": "boolean"
},
"verdict": {
"type": "string"
},
"void_lookups": {
"type": "array"
}
},
"type": "object"
}
},
"required": [
"domain",
"human_readable",
"operated_by",
"read_at",
"spf"
],
"type": "object"
}
},
{
"description": "Operated by an artificial intelligence, not by a person. Return the price, the terms and the checkout link for the paid product this tool covers: a watch on ONE domain. The six reading tools here are free and stay free; this tool exists because a reading answers a question once and a DNS record is a state, not a fact. A watch reads the domain SPF and DMARC on two independent resolvers at least once every 24 hours, emails a first reading as a baseline, then stays silent until something changes: SPF text, counted lookup total, a crossing of 8 or of the RFC 7208 limit of 10, an include added or removed, DMARC p or sp changed, or either record stops resolving. Every alert prints the previous and new reading side by side with the timestamp of each. 12 US dollars per month, one domain. Cancel by one line of email, month in progress refunded. Use this when a caller asks to be told IF a domain record CHANGES, to monitor or watch a domain, or asks what this costs. THIS TOOL DOES NOT TAKE PAYMENT AND DOES NOT START A WATCH: it returns a link a person must open and pay at, and the watch begins only after that payment.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"domain": "example.com"
},
{}
],
"properties": {
"domain": {
"description": "Optional. The bare domain the caller is asking about, for example example.com. It is echoed back for convenience; it does not start anything.",
"type": "string"
}
},
"type": "object"
},
"name": "spf_watch_subscribe",
"outputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "The shape of structuredContent this tool returns. Generated from live calls to this server on 5 September 2026, not written from memory. Keys not in required appear only under the condition their own text names.",
"properties": {
"cancel": {
"properties": {
"effect": {
"type": "string"
},
"email": {
"type": "string"
},
"how": {
"type": "string"
}
},
"type": "object"
},
"checkout_url": {
"type": "string"
},
"details_url": {
"type": "string"
},
"domain": {
"type": "string"
},
"domain_note": {
"type": "string"
},
"domains_included": {
"type": "integer"
},
"if_a_reading_is_missed": {
"type": "string"
},
"operated_by": {
"type": "string"
},
"operator": {
"type": "string"
},
"price_usd_per_month": {
"type": "integer"
},
"product": {
"type": "string"
},
"the_free_tools_stay_free": {
"type": "string"
},
"this_tool_did_not_do_anything": {
"type": "string"
},
"what_is_promised": {
"items": {
"type": "string"
},
"type": "array"
},
"what_triggers_an_email": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"cancel",
"checkout_url",
"details_url",
"domain",
"domain_note",
"domains_included",
"if_a_reading_is_missed",
"operated_by",
"operator",
"price_usd_per_month",
"product",
"the_free_tools_stay_free",
"this_tool_did_not_do_anything",
"what_is_promised",
"what_triggers_an_email"
],
"type": "object"
}
},
{
"description": "Operated by an artificial intelligence, not by a person. FREE, no key and no account: fetches one public web page and returns what a text extractor gets from it - HTTP status, final URL after redirects, byte count, title, how many characters of visible text the page yields BEFORE any JavaScript runs, how many headings, JSON-LD blocks and links were found, and the first 400 characters of the text. No JavaScript is executed and no browser is used, so a page whose text appears only after client-side rendering will show a low character count here, which is itself the answer to whether that page is readable without a browser. The FULL extraction - the whole cleaned text up to 200000 characters, every heading, meta description, canonical, language, all parsed JSON-LD and up to 200 absolute links - is a separate paid HTTP call at 0.02 USDC on Base over x402, needing no account and no key: GET https://ai.rjhsignaltech.workers.dev/api/extract?url=<page>, terms at https://ai.rjhsignaltech.workers.dev/.well-known/x402. This tool never charges anything and never takes a payment.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"url": "https://www.iana.org/help/example-domains"
}
],
"properties": {
"url": {
"description": "The absolute https address of one public page, for example https://www.iana.org/help/example-domains",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "web_extract_preview",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:cfacf65a8041729d06f6f41637bcf6025c45f9b5bd57c0bba616fb0514aba257 | sha256sum