Server definition
- Hash
- sha256:f516cf22e0eda6ed73a7bad56c0efb398f87b71ceb4e8101cc94098fe071d694
- What it is
- What a remote MCP server returned when asked what it offers: 17 tools
The blob, as servednamed by its sha256
{
"instructions": "Tools for agents: confirm a crawler's identity (published IP ranges or a Web Bot Auth signature), check an email's deliverability, match, deduplicate and normalise entity names, and a suite of Australian payroll and tax tools — Fair Work award pay rates, penalties and allowances, the Superannuation Guarantee, GST, invoice totals, and business-identifier validation. Every answer is computed from the input or from published reference data — a matching user-agent or a valid checksum is a claim, not proof that the thing exists. Pass on each answer's stated limits.",
"tools": [
{
"description": "Allowances for an Australian modern award, from the Fair Work Commission MAPD. \"kind\"=wage (leading hand, first aid, tool) or expense (meal, travel, vehicle). By award code (e.g. \"MA000009\") or fixed id. Returns each allowance's amount, all-purpose flag and payment frequency, verbatim (CC BY 4.0). Dollar values only: does NOT determine which allowance applies — read with the award, which prevails. Not legal advice.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"award": "MA000009",
"kind": "wage"
}
],
"properties": {
"award": {
"description": "Modern award code (e.g. \"MA000009\") or numeric award_fixed_id.",
"type": "string"
},
"kind": {
"description": "Which allowance register. Defaults to wage.",
"enum": [
"wage",
"expense"
],
"type": "string"
}
},
"required": [
"award"
],
"type": "object"
},
"name": "award_allowances",
"outputSchema": null
},
{
"description": "Minimum pay rates for an Australian modern award, from the Fair Work Commission MAPD. Input an award code (e.g. \"MA000009\") or fixed id, optionally filtered by classification level or employee-rate-type. Returns each classification's base and calculated rate with operative dates, verbatim from the FWC and stamped with version/published-year (CC BY 4.0). Dollar values only: does NOT say which award or classification applies, or what is payable — read with the award, which prevails. Not legal advice; unknown award throws.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"award": "MA000009",
"classificationLevel": 1
}
],
"properties": {
"award": {
"description": "Modern award code (e.g. \"MA000009\") or numeric award_fixed_id.",
"type": "string"
},
"classificationLevel": {
"description": "Narrow to one classification level (1 = lowest).",
"minimum": 1,
"type": "integer"
},
"employeeRateType": {
"description": "Filter by employee_rate_type_code, e.g. \"AD\" for adult. Comma-delimited for several.",
"maxLength": 100,
"type": "string"
}
},
"required": [
"award"
],
"type": "object"
},
"name": "award_pay_rate",
"outputSchema": null
},
{
"description": "Penalty rates (weekend, public holiday, overtime, shift) for an Australian modern award, from the Fair Work Commission MAPD. By award code (e.g. \"MA000009\") or fixed id, optionally by classification level or employee-rate-type. Returns each penalty's multiplier/percentage and the FWC's own calculated dollar value, verbatim (CC BY 4.0). Dollar values only: does NOT determine which penalty applies to a shift — read with the award, which prevails. Not legal advice; unknown award throws.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"award": "MA000009"
}
],
"properties": {
"award": {
"description": "Modern award code (e.g. \"MA000009\") or numeric award_fixed_id.",
"type": "string"
},
"classificationLevel": {
"description": "Narrow to one classification level.",
"minimum": 1,
"type": "integer"
},
"employeeRateType": {
"description": "Filter by employee_rate_type_code, e.g. \"AD\". Comma-delimited for several.",
"maxLength": 100,
"type": "string"
}
},
"required": [
"award"
],
"type": "object"
},
"name": "award_penalties",
"outputSchema": null
},
{
"description": "Add GST to a GST-exclusive amount, or extract the GST from a GST-inclusive amount, in exact integer cents. GST in an inclusive price is one ELEVENTH, not one tenth. \"basis\" is required — \"exclusive\" adds, \"inclusive\" extracts (synonyms accepted); an unknown basis throws rather than returning a wrong figure.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"amount": "110.00",
"basis": "inclusive"
}
],
"properties": {
"amount": {
"description": "The money amount, e.g. \"110.00\". At most two decimal places.",
"type": "string"
},
"basis": {
"description": "Whether the amount already includes GST.",
"enum": [
"exclusive",
"inclusive"
],
"type": "string"
}
},
"required": [
"amount",
"basis"
],
"type": "object"
},
"name": "calculate_gst",
"outputSchema": null
},
{
"description": "FREE. Before fetching a URL, learn whether your crawler identity will be served, refused, or met by a paid tollgate (Cloudflare Pay Per Crawl, TollBit, a bare 402) — from a standing census, with the price where published and whether the site varies by user-agent. Unknown URLs return \"unknown\" and schedule themselves. Bulk: triage_ai_crawler_access. Observational (a datacenter vantage), not a guarantee.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"url": "https://www.nytimes.com/"
}
],
"properties": {
"url": {
"description": "The page whose crawler-access posture to look up. http or https.",
"maxLength": 2000,
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "check_ai_crawler_access",
"outputSchema": null
},
{
"description": "Score whether two names are the same entity, 0 to 1, with the reasoning broken out. Knows 81 spellings of 30 legal forms across 21 countries (\"Pty. Ltd.\" = \"Proprietary Limited\"), ignores word order (\"Smith, John\" = \"John Smith\"), and down-weights generic words (so \"Woolworths Group\" and \"Coles Group\" stay distinct). Flags obfuscation (homoglyphs, invisible characters, digit substitution) in an \"obfuscation\" field. Check \"distinctiveness\": names of only generic words identify weakly however well they match.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"a": "ACME Pty Ltd",
"b": "Acme Proprietary Limited"
}
],
"properties": {
"a": {
"description": "First name.",
"type": "string"
},
"b": {
"description": "Second name.",
"type": "string"
},
"type": {
"description": "Defaults to company.",
"enum": [
"company",
"person"
],
"type": "string"
}
},
"required": [
"a",
"b"
],
"type": "object"
},
"name": "compare_entity_names",
"outputSchema": null
},
{
"description": "Cluster up to 250 names into groups that are the same entity — the work behind a CRM merge or supplier-list cleanup. Grouped by distinctive words, not compared exhaustively; the response reports how many comparisons ran. If one word dominates the list, \"truncated\" is true (clustering incomplete) — split and retry.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"names": [
"Acme Pty Ltd",
"ACME Proprietary Ltd",
"Beta Co"
]
}
],
"properties": {
"names": {
"items": {
"type": "string"
},
"maxItems": 250,
"type": "array"
},
"threshold": {
"description": "Defaults to 0.85.",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"type": {
"enum": [
"company",
"person"
],
"type": "string"
}
},
"required": [
"names"
],
"type": "object"
},
"name": "deduplicate_entity_names",
"outputSchema": null
},
{
"description": "Score one name against up to 750 candidates; returns those over the threshold, ranked, each tagged with its index in the input array. compare_entity_names applied as a search (legal-form-, word-order- and obfuscation-aware). Over 750 candidates throws rather than truncating.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"candidates": [
"ACME Pty Ltd",
"Beta Co",
"Acme Corporation"
],
"query": "Acme"
}
],
"properties": {
"candidates": {
"description": "Names to search.",
"items": {
"type": "string"
},
"maxItems": 750,
"type": "array"
},
"limit": {
"description": "Defaults to 10.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "The name to look for.",
"type": "string"
},
"threshold": {
"description": "Minimum score to return. Defaults to 0.7.",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"type": {
"enum": [
"company",
"person"
],
"type": "string"
}
},
"required": [
"query",
"candidates"
],
"type": "object"
},
"name": "match_entity_name",
"outputSchema": null
},
{
"description": "Reduce a name to its comparable core with the legal form split out — a stable, deterministic grouping key. Reports every token removed and flags any obfuscation it strips (homoglyphs, invisible characters, digit-for-letter substitution). The normalisation the matching tools apply, exposed on its own.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"name": "ACME Pty. Ltd."
}
],
"properties": {
"name": {
"description": "The name to normalise.",
"type": "string"
},
"type": {
"enum": [
"company",
"person"
],
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "normalise_entity_name",
"outputSchema": null
},
{
"description": "Given a watchId from watch_ai_crawler_access, returns the URLs whose access changed since your last pull (started refusing, a tollgate appeared, a price moved) and nothing for those unchanged. The first pull reports the starting state. Each pull spends one credit whether or not anything changed.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"watchId": "a4177d3f-b6bb-4bcb-a691-50949dd95f41"
}
],
"properties": {
"watchId": {
"description": "The watchId returned by watch_ai_crawler_access.",
"maxLength": 100,
"type": "string"
}
},
"required": [
"watchId"
],
"type": "object"
},
"name": "pull_ai_crawler_watch",
"outputSchema": null
},
{
"description": "Compute the Australian Superannuation Guarantee on a qualifying-earnings amount, exact to the cent. Returns the SG, the rate, the earnings subject to SG after the annual maximum-contributions-base cap, and the financial year used. Computed the CURRENT way — from 1 July 2026 the base is qualifying earnings (not OTE) and the cap is annual, under Payday Super, so old quarterly-OTE code is now wrong. You supply the qualifying-earnings figure; this does NOT define what counts as qualifying earnings. ATO-sourced, not tax advice. Current financial year only; an out-of-range date throws.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"qualifyingEarnings": "5000.00"
}
],
"properties": {
"asAt": {
"description": "YYYY-MM-DD — which schedule to use. Defaults to today.",
"maxLength": 10,
"type": "string"
},
"qualifyingEarnings": {
"description": "The qualifying-earnings amount to compute SG on, e.g. \"5000.00\".",
"type": "string"
}
},
"required": [
"qualifyingEarnings"
],
"type": "object"
},
"name": "superannuation_guarantee",
"outputSchema": null
},
{
"description": "Total a multi-line invoice in integer cents, handling GST-free lines and both ATO rounding methods (per-line and total-based), and report the exact discrepancy between them — an invoice must not mix them. A malformed line throws.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"lines": [
{
"description": "Consulting",
"quantity": 2,
"unitPrice": "100.00"
},
{
"description": "Milk",
"gstFree": true,
"unitPrice": "5.00"
}
],
"taxInclusive": false
}
],
"properties": {
"lines": {
"description": "Invoice lines.",
"items": {
"properties": {
"description": {
"description": "Line description.",
"type": "string"
},
"gstFree": {
"description": "Set for GST-free supplies such as basic food.",
"type": "boolean"
},
"quantity": {
"description": "Defaults to 1.",
"minimum": 0,
"type": "number"
},
"unitPrice": {
"description": "Price per unit, at most two decimal places.",
"type": "string"
}
},
"required": [
"unitPrice"
],
"type": "object"
},
"maxItems": 1000,
"type": "array"
},
"rounding": {
"description": "Round GST per line, or once over the total. Defaults to line.",
"enum": [
"line",
"total"
],
"type": "string"
},
"taxInclusive": {
"description": "Whether unitPrice values already include GST.",
"type": "boolean"
}
},
"required": [
"lines"
],
"type": "object"
},
"name": "total_invoice",
"outputSchema": null
},
{
"description": "Check up to 200 URLs in one call for AI-crawler access — which your identity can read, which refuse it, and which sit behind a paid tollgate — with a summary to branch on before spending a fetch. Unknown URLs cost nothing and schedule themselves; known URLs are metered. Observational (what a datacenter vantage saw), not a guarantee; a user-agent is a claim, not a credential.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"urls": [
"https://www.nytimes.com/",
"https://www.reddit.com/"
]
}
],
"properties": {
"urls": {
"description": "The URLs to triage. Up to 200. http or https.",
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 200,
"type": "array"
}
},
"required": [
"urls"
],
"type": "object"
},
"name": "triage_ai_crawler_access",
"outputSchema": null
},
{
"description": "Validate an Australian ABN, ACN, ARBN, TFN, Medicare or BSB against its official checksum. Offline and deterministic; whitespace and hyphens ignored; a valid ABN also flags whether the holder is a company. A pass proves the digits are internally consistent (catches typos and fabrications); it does NOT prove the identifier is issued, active, or held by anyone. BSB has no check digit: format only. Unknown scheme throws.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"type": "abn",
"value": "51 824 753 556"
}
],
"properties": {
"type": {
"description": "Which identifier scheme to check.",
"enum": [
"abn",
"acn",
"arbn",
"tfn",
"medicare",
"bsb"
],
"type": "string"
},
"value": {
"description": "The identifier. Spaces and hyphens are ignored.",
"type": "string"
}
},
"required": [
"type",
"value"
],
"type": "object"
},
"name": "validate_australian_identifier",
"outputSchema": null
},
{
"description": "FREE. Is a crawler who it claims to be, by the strongest available method. CRYPTOGRAPHIC (best): pass a Web Bot Auth signature (RFC 9421) with its signatureInput, signatureAgent and url — we fetch the operator's published key and verify it (proof of key control, not just network origin). NETWORK: pass a source ip with userAgent/claimed — we check the operator's published IP ranges (OpenAI, Anthropic, Google, Perplexity, Bing, Apple, DuckDuckGo, Common Crawl, Mistral, Kagi, and more). Returns verified, spoofed, unrecognised, or indeterminate; never calls a claim spoofed when it merely cannot be checked.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"ip": "203.0.113.10",
"userAgent": "Mozilla/5.0 (compatible; GPTBot/1.1; +https://openai.com/gptbot)"
}
],
"properties": {
"claimed": {
"description": "Optional explicit identity key (e.g. \"gptbot\", \"bingbot\", \"googlebot\") instead of a user-agent.",
"maxLength": 40,
"type": "string"
},
"ip": {
"description": "The source IP address to verify (IPv4 or IPv6). Used for the network-range check.",
"maxLength": 45,
"type": "string"
},
"signature": {
"description": "The request's Signature header value (Web Bot Auth / RFC 9421).",
"maxLength": 4000,
"type": "string"
},
"signatureAgent": {
"description": "The request's Signature-Agent header value — the operator key-directory URL.",
"maxLength": 2000,
"type": "string"
},
"signatureInput": {
"description": "The request's Signature-Input header value.",
"maxLength": 2000,
"type": "string"
},
"url": {
"description": "The request URL — required for a Web Bot Auth signature check (rebuilds the signed components).",
"maxLength": 2000,
"type": "string"
},
"userAgent": {
"description": "The User-Agent string the request presented. Used to infer the claimed identity.",
"maxLength": 512,
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "verify_ai_crawler",
"outputSchema": null
},
{
"description": "FREE. Validate an email before spending a send, token, or signup — no mail sent, no SMTP probe. Checks RFC-5322 syntax, live MX over DNS (and names the provider), disposable domains, role mailboxes (info@ — custom domains only, never freemail), and typos (gmial.com to gmail.com). Returns one verdict (deliverable, undeliverable, disposable, role_address, typo_suspected, or invalid), a 0-100 deliverability score, the canonical mailbox for dedup, and a verdict hash. Confirms domain reachability, not that a specific mailbox exists.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"email": "[email protected]"
}
],
"properties": {
"email": {
"description": "The email address to check.",
"maxLength": 254,
"type": "string"
}
},
"required": [
"email"
],
"type": "object"
},
"name": "verify_email_address",
"outputSchema": null
},
{
"description": "Register a set of URLs and pre-buy pull credits; the census watches them for access changes — a paywall appearing, an identity refused, a tollgate. Returns a watchId (bearer token — keep it secret). Pull changes with pull_ai_crawler_watch. Adds are free, pulls are paid; a watch expires after inactivity.",
"inputSchema": {
"additionalProperties": false,
"examples": [
{
"credits": 10,
"urls": [
"https://example.com/"
]
}
],
"properties": {
"credits": {
"description": "How many pulls to buy. Defaults to 10.",
"maximum": 10000,
"minimum": 1,
"type": "integer"
},
"freshness": {
"description": "Whether this set is checked ahead of the general census. Same price; defaults to standard.",
"enum": [
"standard",
"priority"
],
"type": "string"
},
"urls": {
"description": "The URLs to watch. Up to 200.",
"items": {
"maxLength": 2000,
"type": "string"
},
"maxItems": 200,
"type": "array"
}
},
"required": [
"urls"
],
"type": "object"
},
"name": "watch_ai_crawler_access",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:f516cf22e0eda6ed73a7bad56c0efb398f87b71ceb4e8101cc94098fe071d694 | sha256sum