---
title: "Free tools for work that should not stay tedious"
canonical: https://wavect.io/tools/
language: en
description: "Free, open-source tools from Wavect for LoRaWAN codec testing, ERC-4337 debugging, and practical local workflows. No account and no uploads."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

OPEN TOOLS · BUILT FOR REAL WORK

# Small tools for jobs that should not stay annoying.

Practical, narrow utilities we built after doing the same tedious work one time too many. No account, no black box, and no pretending one tool solves everything.

- Free to use
- Open source
- Narrow by design

AVAILABLE NOW

## One useful job at a time

The shelf starts small on purpose. Every tool has to solve a real workflow before it earns a place here.

4 tools

### [MCP Install Risk Scanner](/tools/mcp-install-risk-scanner/)

- **Details:** MCP · COMMANDS · CONFIG

Check MCP install commands and configuration for risky execution, privilege, secret, filesystem, network, pinning, environment, and container patterns before you run them.

### [LoRaWAN Payload Codec Tester](/tools/lorawan-payload-codec-tester/)

- **Details:** LORAWAN · TTN · CHIRPSTACK

Run real uplink and downlink codecs against repeatable payload fixtures. Compare expected JSON, trace byte reads, and export tests without creating a network-server application.

### [ERC-4337 UserOperation Debugger](/tools/erc-4337-useroperation-debugger/)

- **Details:** ERC-4337 · ENTRYPOINT · PAYMASTER

Inspect a UserOperation, packed handleOps calldata, or bundler revert. Split packed fields, validate version rules, calculate the hash, and export a reproducible RPC request.

### [Report unwanted emails in Austria](/tools/report-unwanted-emails-austria/)

- **Details:** macOS · APPLE MAIL

Turn a selected advertising email into a review-ready report draft for Austria's Fernmeldebüro. The original message is attached as an.eml file, and nothing is sent automatically.

AI SKILLS

## Need reusable judgment, not another app?

Our open AI Skills package product, QA, pricing, and conversion know-how into portable instructions for your own AI workflow.

[Browse AI Skills](/skills/)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/tools/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-07-21",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-07-21",
      "url": "https://wavect.io/tools/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "CollectionPage",
  "description": "Free, open-source tools from Wavect for LoRaWAN codec testing, ERC-4337 debugging, and practical local workflows. No account and no uploads.",
  "mainEntity": {
    "@type": "ItemList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "name": "MCP Install Risk Scanner",
        "position": 1,
        "url": "https://wavect.io/tools/mcp-install-risk-scanner/"
      },
      {
        "@type": "ListItem",
        "name": "LoRaWAN Payload Codec Tester",
        "position": 2,
        "url": "https://wavect.io/tools/lorawan-payload-codec-tester/"
      },
      {
        "@type": "ListItem",
        "name": "ERC-4337 UserOperation Debugger",
        "position": 3,
        "url": "https://wavect.io/tools/erc-4337-useroperation-debugger/"
      },
      {
        "@type": "ListItem",
        "name": "Report unwanted emails in Austria",
        "position": 4,
        "url": "https://wavect.io/tools/report-unwanted-emails-austria/"
      }
    ]
  },
  "name": "Small tools for jobs that should not stay annoying.",
  "url": "https://wavect.io/tools/"
}
```
