{"serverId":"mcp-registry/ca.bakhour/profitcollector","tools":[{"name":"get_dns_lookup","fixed":{"name":"get_dns_lookup","description":"Resolve ONE DNS record type for a domain. For all record types at once use /domain/intelligence; for a bundled DNS+TLS+headers audit use /web/audit or /security/posture; for mail-security plus a scored verdict use /domain/due-diligence.","inputSchema":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string","title":"Domain"},"record_type":{"type":"string","title":"Record Type","default":"A"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":136,"tokensAfter":136},{"name":"get_domain_intelligence","fixed":{"name":"get_domain_intelligence","description":"Collect ALL common DNS record types (A/AAAA/MX/NS/TXT/CAA) for a domain in one call -- the multi-record bundle version of /dns/lookup.","inputSchema":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string","title":"Domain"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":91,"tokensAfter":91},{"name":"get_jwt_decode","fixed":{"name":"get_jwt_decode","description":"Decode a JWT payload without signature verification.","inputSchema":{"type":"object","required":["token"],"properties":{"token":{"type":"string","title":"Token"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":65,"tokensAfter":65},{"name":"get_security_headers","fixed":{"name":"get_security_headers","description":"Inspect HTTP security headers for ONE URL only. For headers combined with TLS and DNS, use /web/audit (raw) or /security/posture (scored).","inputSchema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","title":"Url"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":89,"tokensAfter":89},{"name":"get_security_posture","fixed":{"name":"get_security_posture","description":"Assess TLS and HTTP security posture for a public HTTPS website -- the SAME inspection as /web/audit, but returns a 0-100 score/grade and findings instead of raw fields.","inputSchema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","title":"Url"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"get_ssl_check","fixed":{"name":"get_ssl_check","description":"Inspect the TLS certificate for ONE hostname only. For TLS combined with HTTP headers and DNS, use /web/audit (raw) or /security/posture (scored).","inputSchema":{"type":"object","required":["hostname"],"properties":{"hostname":{"type":"string","title":"Hostname"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":94,"tokensAfter":94},{"name":"get_subnet_calculate","fixed":{"name":"get_subnet_calculate","description":"Calculate subnet information from CIDR notation.","inputSchema":{"type":"object","required":["cidr"],"properties":{"cidr":{"type":"string","title":"Cidr"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":65,"tokensAfter":65},{"name":"get_timestamp_convert","fixed":{"name":"get_timestamp_convert","description":"Convert a Unix timestamp to UTC ISO-8601.","inputSchema":{"type":"object","required":["timestamp"],"properties":{"timestamp":{"type":"number","title":"Timestamp"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":67,"tokensAfter":67},{"name":"get_url_parse","fixed":{"name":"get_url_parse","description":"Parse a URL into structured components.","inputSchema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","title":"Url"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":60,"tokensAfter":60},{"name":"get_uuid_generate","fixed":{"name":"get_uuid_generate","description":"Generate a random UUID version 4.","inputSchema":{"type":"object","properties":{"count":{"type":"integer","title":"Count","default":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":59,"tokensAfter":59},{"name":"get_web_audit","fixed":{"name":"get_web_audit","description":"Consolidated DNS, TLS and HTTP security audit for a public HTTPS website, returned as RAW findings (no score) -- the bundled version of /dns/lookup + /ssl/check + /security/headers. Use /security/posture instead for a 0-100 score/grade.","inputSchema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","title":"Url"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":114,"tokensAfter":114},{"name":"post_base64_decode","fixed":{"name":"post_base64_decode","description":"Decode Base64 to UTF-8 text.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":55,"tokensAfter":55},{"name":"post_base64_encode","fixed":{"name":"post_base64_encode","description":"Encode UTF-8 text using Base64.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":55,"tokensAfter":55},{"name":"post_data_transform","fixed":{"name":"post_data_transform","description":"Normalize and transform common structured text automatically.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"},"operation":{"enum":["auto","json_pretty","json_minify","base64_encode","base64_decode","dedupe_lines"],"type":"string","default":"auto"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102},{"name":"post_domain_due_diligence","fixed":{"name":"post_domain_due_diligence","description":"The most comprehensive domain assessment: DNS + mail security (SPF/DKIM/DMARC) + TLS + HTTP headers, scored. The only endpoint in this group that adds mail-security analysis. Use for a one-shot decision-grade verdict on an unfamiliar domain; use /dns/lookup, /ssl/check, /security/headers, /web/audit or /security/posture instead for a single fact or a cheaper signal.","inputSchema":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string","title":"Domain","examples":["example.com"],"minLength":1,"description":"Public domain name to assess"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":181,"tokensAfter":181},{"name":"post_freshdep_scan","fixed":{"name":"post_freshdep_scan","description":"Flags pinned dependencies in a repository's requirements.txt, package-lock.json, or uv.lock published more recently than a freshness threshold -- a supply-chain-compromise tripwire. Free CLI (requirements.txt/package-lock.json only, uv.lock support pending there): github.com/sbakhour/freshdep.","inputSchema":{"type":"object","required":["repo_url"],"properties":{"ref":{"type":"string","description":"Optional branch/tag to check out instead of the default branch."},"repo_url":{"type":"string","description":"Full https://github.com/<owner>/<repo> URL to scan."},"threshold_days":{"type":"number","description":"Flag anything published more recently than this many days ago. Defaults to 7."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":214,"tokensAfter":214},{"name":"post_hash_sha256","fixed":{"name":"post_hash_sha256","description":"Generate SHA-256 digest from text.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":56,"tokensAfter":56},{"name":"post_hash_sha512","fixed":{"name":"post_hash_sha512","description":"Generate SHA-512 digest from text.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":56,"tokensAfter":56},{"name":"post_json_minify","fixed":{"name":"post_json_minify","description":"Minify valid JSON text.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":53,"tokensAfter":53},{"name":"post_json_pretty","fixed":{"name":"post_json_pretty","description":"Pretty-print valid JSON text.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":54,"tokensAfter":54},{"name":"post_json_repair","fixed":{"name":"post_json_repair","description":"Repair common malformed JSON formatting issues.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":59,"tokensAfter":59},{"name":"post_json_validate","fixed":{"name":"post_json_validate","description":"Validate JSON text and return parsing details.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":60,"tokensAfter":60},{"name":"post_media_image_convert","fixed":{"name":"post_media_image_convert","description":"Convert an image between common formats (e.g. PNG/JPEG/WebP) from a URL or base64 payload.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":61,"tokensAfter":61},{"name":"post_quebec_invoice_compliance_check","fixed":{"name":"post_quebec_invoice_compliance_check","description":"Verifies GST/QST were calculated correctly per Revenu Quebec's current (non-compounded) formula, and flags whether a French invoice version is present per Charter of the French Language s.57/89/91. Pure arithmetic + text check; not legal or tax advice.","inputSchema":{"type":"object","required":["subtotal","gst_amount","qst_amount"],"properties":{"subtotal":{"type":"number","description":"Pre-tax subtotal in CAD."},"gst_amount":{"type":"number","description":"GST amount as shown on the invoice."},"qst_amount":{"type":"number","description":"QST amount as shown on the invoice."},"french_text":{"type":"string","description":"The invoice's French text, if any (optional -- its absence is itself flagged)."},"english_text":{"type":"string","description":"The invoice's primary/other-language text (optional but needed for the language check)."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":262,"tokensAfter":262},{"name":"post_quebec_invoice_generate","fixed":{"name":"post_quebec_invoice_generate","description":"Assembles a bilingual (French/English) Quebec invoice document with GST/QST computed exactly per Revenu Quebec's current formula -- you supply both languages' line-item text, this does not translate. Not legal or tax advice.","inputSchema":{"type":"object","required":["invoice_number","seller_name","line_items"],"properties":{"line_items":{"type":"array","items":{"type":"object","required":["description_en","description_fr","amount"],"properties":{"amount":{"type":"number"},"description_en":{"type":"string"},"description_fr":{"type":"string"}}},"description":"Each item needs description_en, description_fr (both required -- this assembles, it does not translate), and amount."},"seller_name":{"type":"string","description":"Seller/business name to display."},"invoice_number":{"type":"string","description":"Your own invoice number/reference."},"seller_gst_number":{"type":"string","description":"GST registration number, optional."},"seller_qst_number":{"type":"string","description":"QST registration number, optional."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":310,"tokensAfter":310},{"name":"post_security_repo_risk_report_deep","fixed":{"name":"post_security_repo_risk_report_deep","description":"Everything in the standard report, plus a repo-wide secret/credential exposure scan (matched values are never returned).","inputSchema":{"type":"object","required":["repo_url"],"properties":{"ref":{"type":"string","description":"Optional branch/tag to analyze. Defaults to the repository's default branch."},"repo_url":{"type":"string","description":"Public https://github.com/... or https://gitlab.com/... repository URL."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":144},{"name":"post_security_repo_risk_report_due_diligence","fixed":{"name":"post_security_repo_risk_report_due_diligence","description":"Everything in the deep report, plus real OpenSSF Scorecard maintainer/governance signals and a prioritized recommendation. An automated baseline positioned against $5,000-$95,000 human technical due diligence.","inputSchema":{"type":"object","required":["repo_url"],"properties":{"ref":{"type":"string","description":"Optional branch/tag to analyze. Defaults to the repository's default branch."},"repo_url":{"type":"string","description":"Public https://github.com/... or https://gitlab.com/... repository URL."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":171,"tokensAfter":171},{"name":"post_security_repo_risk_report_standard","fixed":{"name":"post_security_repo_risk_report_standard","description":"SBOM inventory plus real OSV.dev dependency-vulnerability matches and dependency-freshness signals for a public Git repository. One-shot alternative to a per-seat secret-scanning subscription.","inputSchema":{"type":"object","required":["repo_url"],"properties":{"ref":{"type":"string","description":"Optional branch/tag to analyze. Defaults to the repository's default branch."},"repo_url":{"type":"string","description":"Public https://github.com/... or https://gitlab.com/... repository URL."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":165,"tokensAfter":165},{"name":"post_text_dedupe_lines","fixed":{"name":"post_text_dedupe_lines","description":"Remove duplicate lines while preserving original order.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":63,"tokensAfter":63},{"name":"post_text_stats","fixed":{"name":"post_text_stats","description":"Calculate character, word, line and byte statistics.","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":60,"tokensAfter":60},{"name":"post_x402_service_trust_report","fixed":{"name":"post_x402_service_trust_report","description":"Live, on-demand check of ONE x402-protected endpoint before you pay it: payment-requirements structure, TLS certificate, payTo on-chain balance, known-asset recognition, resource/host consistency, and discovery-manifest cross-check -- not a cached aggregate reputation score.","inputSchema":{"type":"object","required":["target_url"],"properties":{"target_url":{"type":"string","description":"The full https:// URL of the x402-protected endpoint to evaluate."},"target_method":{"enum":["GET","POST"],"type":"string","description":"HTTP method to request target_url with. Defaults to GET; use POST for action-style endpoints that only 402-challenge on POST."}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":208,"tokensAfter":208}],"toolsChanged":31,"tokensSaved":0,"todo":[{"tool":"get_dns_lookup","params":["domain","record_type"]},{"tool":"get_domain_intelligence","params":["domain"]},{"tool":"get_jwt_decode","params":["token"]},{"tool":"get_security_headers","params":["url"]},{"tool":"get_security_posture","params":["url"]},{"tool":"get_ssl_check","params":["hostname"]},{"tool":"get_subnet_calculate","params":["cidr"]},{"tool":"get_timestamp_convert","params":["timestamp"]},{"tool":"get_url_parse","params":["url"]},{"tool":"get_uuid_generate","params":["count"]},{"tool":"get_web_audit","params":["url"]},{"tool":"post_base64_decode","params":["text"]},{"tool":"post_base64_encode","params":["text"]},{"tool":"post_data_transform","params":["text","operation"]},{"tool":"post_hash_sha256","params":["text"]},{"tool":"post_hash_sha512","params":["text"]},{"tool":"post_json_minify","params":["text"]},{"tool":"post_json_pretty","params":["text"]},{"tool":"post_json_repair","params":["text"]},{"tool":"post_json_validate","params":["text"]},{"tool":"post_text_dedupe_lines","params":["text"]},{"tool":"post_text_stats","params":["text"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}