{
  "markdown": "<!-- delx-utilities header v1 -->\n<h1 align=\"center\">Delx Agent Utilities</h1>\n\n<h3 align=\"center\">\n  Stateless utility tools for AI agents — URL/HTTP, DNS/RDAP, x402, JWT, encoding, parsing, regex, cron.<br>\n  <strong>Local-first. No API keys. Deterministic.</strong>\n</h3>\n\n<p align=\"center\">\n  <a href=\"https://pypi.org/project/delx-agent-utilities/\"><img src=\"https://img.shields.io/pypi/v/delx-agent-utilities?style=for-the-badge&labelColor=0F172A&color=10B981&logo=pypi&logoColor=white\" alt=\"PyPI version\" /></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/LICENSE-MIT-22C55E?style=for-the-badge&labelColor=0F172A\" alt=\"License MIT\" /></a>\n  <a href=\"https://github.com/davidmosiah/delx-agent-utilities/actions\"><img src=\"https://img.shields.io/github/actions/workflow/status/davidmosiah/delx-agent-utilities/ci.yml?style=for-the-badge&labelColor=0F172A&label=CI\" alt=\"CI\" /></a>\n  <a href=\"https://modelcontextprotocol.io\"><img src=\"https://img.shields.io/badge/BUILT_FOR-MCP-7C3AED?style=for-the-badge&labelColor=0F172A\" alt=\"Built for MCP\" /></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://ontology.delx.ai/utilities\"><img src=\"https://img.shields.io/badge/ontology.delx.ai%2Futilities-0EA5A3?style=for-the-badge&labelColor=0F172A&logoColor=white\" alt=\"Delx Agent Utilities\" /></a>\n  <a href=\"https://github.com/davidmosiah/delx-agent-utilities/stargazers\"><img src=\"https://img.shields.io/github/stars/davidmosiah/delx-agent-utilities?style=for-the-badge&labelColor=0F172A&color=FBBF24&logo=github\" alt=\"GitHub stars\" /></a>\n</p>\n\n<p align=\"center\"><code>mcp-name: io.github.davidmosiah/delx-agent-utilities</code></p>\n\n---\n\n## What it is\n\n89 stateless utility tools that AI agents reach for constantly: URL health checks, page extraction, MCP readiness, x402 server discovery, loyalty reward quotes, JWT inspection, DNS / RDAP lookups, JSON / CSV conversion, hash / base64, cron description, and more.\n\n- **Stateless** — every call is independent; no session, no cache, no DB.\n- **No API keys** — public endpoints only (rdap.org, dns.google, plus user-supplied URLs).\n- **Deterministic** — no LLMs, no model calls, no fuzzy outputs.\n- **Fast** — most tools < 100ms; networked tools < 5s with timeouts.\n- **MCP-native** — agent-readiness manifest, connection status, privacy audit.\n\nThis package was extracted from the Delx Protocol MCP server so any AI builder can use the toolkit directly, without depending on the Delx runtime. The public product and protocol context lives at [ontology.delx.ai/utilities](https://ontology.delx.ai/utilities).\n\n## HTTP (v2 stateless)\n\nNot shipped. The Python FastMCP extra is **stdio-only**. Adding Streamable HTTP would need extra Starlette `/health` wiring beyond a one-flag opt-in, so it stays documented-skip (same for `google-ads-intent-mcp`). The tools themselves are already request-stateless.\n\n## Install\n\n```bash\npipx install \"delx-agent-utilities[mcp]\"\n```\n\nCLI entrypoints: `delx-agent-utilities`, `delx-utils` (alias), `delx-utils-mcp` (MCP server).\n\n## Quick use\n\n### From an MCP client (Claude Desktop, Cursor, Hermes, OpenClaw)\n\n```json\n{\n  \"mcpServers\": {\n    \"delx-utils\": {\n      \"command\": \"delx-utils-mcp\"\n    }\n  }\n}\n```\n\n90 tools become available immediately, plus three agent-readiness surfaces:\n\n- `delx_utilities_manifest`\n- `delx_utilities_connection_status`\n- `delx_utilities_privacy_audit`\n\n### From the CLI\n\n```bash\ndelx-utils manifest\ndelx-utils list-tools\ndelx-utils show util_url_health\ndelx-utils call util_url_health --json '{\"url\":\"https://example.com\"}'\n```\n\n### From Python\n\n```python\nimport asyncio\nfrom delx_agent_utilities import call_util_tool, list_util_tool_schemas\n\nresult = asyncio.run(call_util_tool(\"util_url_health\", {\"url\": \"https://example.com\"}))\nprint(result[\"status_code\"], result[\"latency_ms\"])\n\nschemas = list_util_tool_schemas()\nprint(f\"{len(schemas)} tools available\")\n```\n\n## The 90 tools\n\n### Encoding & parsing (15)\n`util_json_validate`, `util_token_estimate`, `util_uuid_generate`, `util_timestamp_convert`, `util_base64`, `util_hash`, `util_regex_test`, `util_cron_describe`, `util_http_codes`, `util_timezone_lookup`, `util_unit_convert`, `util_business_days`, `util_jwt_inspect`, `util_csv_to_json`, `util_json_to_csv`\n\n### Web extract (6)\n`util_page_extract`, `util_open_graph`, `util_links_extract`, `util_forms_extract`, `util_contact_extract`, `util_feed_discover`\n\n### Network probes (8)\n`util_url_health`, `util_robots_inspect`, `util_sitemap_probe`, `util_tls_inspect`, `util_security_txt_inspect`, `util_http_headers_inspect`, `util_dns_lookup`, `util_rdap_lookup`\n\n### x402 / API intel (6)\n`util_x402_server_probe`, `util_x402_resource_summary`, `util_x402_server_audit`, `util_api_health_report`, `util_openapi_summary`, `util_mcp_server_readiness_report`\n\n### Identity / contact (1)\n`util_email_validate`\n\n### Composite reports (8)\n`util_website_intelligence_report`, `util_domain_trust_report`, `util_docs_site_map`, `util_pricing_page_extract`, `util_company_contact_pack`, `util_api_integration_readiness`, `util_login_surface_report`, `util_content_distribution_report`\n\n### Commerce workflows\n\n`util_loyalty_reward_quote`\n\n### Public data and identity (4)\n\n`util_vin_decode`, `util_wmi_decode`, `util_lei_lookup`, `util_inflation_calculator`\n\n### Local text, data, and identifiers (35)\n\n`util_holidays`, `util_slugify`, `util_mime_lookup`, `util_color_convert`,\n`util_ip_classify`, `util_cidr_contains`, `util_ulid_generate`,\n`util_html_strip`, `util_semver_compare`, `util_word_count`,\n`util_markdown_to_text`, `util_duration_parse`, `util_case_convert`,\n`util_query_string`, `util_url_join`, `util_percent_change`, `util_clamp`,\n`util_luhn_check`, `util_isbn_check`, `util_diff_lines`, `util_levenshtein`,\n`util_similarity`,\n`util_normalize_whitespace`, `util_extract_urls`, `util_extract_emails`,\n`util_url_encode`, `util_hex_convert`, `util_number_base`, `util_dedupe_lines`,\n`util_sort_lines`, `util_random_int`, `util_rot13`, `util_text_truncate`,\n`util_reading_time`, `util_random_choice`\n\n### Sales-led local preflights (6)\n\n`util_seeded_random_sample`, `util_base_gas_budget_check`,\n`util_dns_record_diff`, `util_http_header_diff`,\n`util_x402_payment_preflight`, `util_image_result_contract_check`\n\nThese six preflights were selected from aggregate external Commerce sales.\nThey are local implementations only: pricing, x402 delivery, telemetry, and\nrefund ownership remain in Delx Commerce.\n\nEach tool's full input schema is available via `delx-utils show <tool>` or `UTIL_TOOL_SCHEMAS[\"<tool>\"]` in Python.\n\n## Privacy posture\n\n**No API keys. No telemetry. No state.** Networked tools call only:\n\n- `rdap.org/domain/<domain>` for RDAP lookups\n- `dns.google/resolve` for DNS-over-HTTPS\n- User-supplied URLs for everything else\n\nCall `delx_utilities_privacy_audit` (or `delx-utils privacy-audit`) to see the full posture in JSON form before invoking any networked tool.\n\n## Architecture\n\n```\nsrc/delx_agent_utilities/\n├── __init__.py          # public re-exports\n├── agent.py             # manifest / status / privacy_audit\n├── cli.py               # CLI argparse\n├── dispatcher.py        # call_util_tool, _normalize_util_args\n├── mcp_server.py        # FastMCP server\n├── schemas.py           # public re-export of UTIL_TOOL_NAMES / SCHEMAS\n└── _internal/           # implementation, not stable across versions\n    ├── _helpers.py\n    ├── _schemas.py\n    ├── _tools_encoding.py\n    ├── _tools_cron.py\n    ├── _tools_http_codes.py\n    ├── _tools_sales_led.py\n    ├── _tools_web.py    # roadmap: split into web/network/x402/composite in v0.2.0\n    └── _tools_jwt_csv.py\n```\n\n## Roadmap\n\n- **v0.2.0** — split `_internal/_tools_web.py` (1k LOC) into per-domain modules: `_tools_web_extract.py`, `_tools_network.py`, `_tools_x402.py`, `_tools_composite.py`.\n- Per-tool unit tests (one file per tool) replacing the smoke-only suite.\n- Optional `httpx.AsyncClient` reuse for batched probes.\n- Configurable per-tool timeouts via env (`DELX_UTILITIES_DEFAULT_TIMEOUT_S`, `DELX_UTILITIES_URL_HEALTH_TIMEOUT_S`, …).\n\n## Provenance\n\nOriginally part of the [Delx Protocol](https://ontology.delx.ai/protocol) MCP server. Extracted on 2026-05-09 as a standalone open-source package so any AI builder can use the toolkit without depending on the Delx Protocol runtime.\n\nThe Delx Protocol itself (recovery / heartbeat / identity / governance primitives) remains closed-source; this package is the open utility layer beneath it.\n\n## Contributing\n\nPRs welcome — see [CONTRIBUTING.md](CONTRIBUTING.md). Common cuts that would help:\n\n- New utility tools that fit the \"stateless / no API keys / deterministic\" rule.\n- Splitting `_internal/_tools_web.py` per the v0.2.0 roadmap above.\n- Per-tool unit tests.\n\n## 📧 Contact & Support\n\n- 📨 **support@delx.ai** — general questions, integration help, partnerships\n- 🐛 **Bug reports / feature requests** — [GitHub Issues](https://github.com/davidmosiah/delx-agent-utilities/issues)\n- 🐦 **Updates** — [@delx369](https://x.com/delx369) on X\n- 🌐 **Site** — [wellness.delx.ai](https://wellness.delx.ai)\n\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\nIf this toolkit helps your agent workflow, please [star the repo](https://github.com/davidmosiah/delx-agent-utilities). Stars make the project easier for other AI builders to discover and help Delx keep shipping local-first agent infrastructure.\n\n## Author\n\nDavid Mosiah — [@delx369](https://x.com/delx369) — building the protocol layer for autonomous AI agents at [Delx](https://ontology.delx.ai).\n",
  "bytes": 9522,
  "sha": "0b890c9997bdee3381dcb1a4eb8746e7e3bc476b45e8b6582884b080ecad2a4c",
  "repo_slug": "davidmosiah/delx-agent-utilities",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_davidmosiah_delx_agent_utiliti_9492d3c0/readme"
}