tapo — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited tapo (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Control Tapo devices using npx mcporter call tapo.<tool>.
You need a Tapo MCP server (v0.4.0 or later) running on your network (HTTP transport). Bearer token auth is recommended.
npx mcporter config add tapo http://<TAPO_MCP_IP> \
--transport http \
--header "Authorization=Bearer <YOUR_TOKEN>" \
--scope home npx mcporter list tapo --schemaYou should see list_devices, check_device, get_device_state, control_device, and take_snapshot.
See references/setup.md for the full walkthrough, config management, and troubleshooting.
List all Tapo devices on the network.
npx mcporter call tapo.list_devicesReturns each device's id, name, model, ip, set_capabilities, get_capabilities, and children (for power strips and the H100 hub).
Verify a device ID matches at a given IP.
npx mcporter call tapo.check_device id="<DEVICE_ID>" ip="<IP>"Get a device's current state. Automatically runs check_device first.
# Device info
npx mcporter call tapo.get_device_state id="<DEVICE_ID>" ip="<IP>" capability='{"type": "DeviceInfo"}'
# Trigger logs (S200, T100, T110, T300 hub children) — newest first
npx mcporter call tapo.get_device_state id="<CHILD_ID>" ip="<HUB_IP>" capability='{"type": "TriggerLogs", "page_size": 20, "start_id": 0}'
# Last 24h temperature/humidity records (T310, T315 hub children)
npx mcporter call tapo.get_device_state id="<CHILD_ID>" ip="<HUB_IP>" capability='{"type": "TemperatureHumidityRecords"}'Control a device. Automatically runs check_device first.
# Turn on
npx mcporter call tapo.control_device id="<DEVICE_ID>" ip="<IP>" capabilities='[{"type": "OnOff", "value": true}]'
# Turn off
npx mcporter call tapo.control_device id="<DEVICE_ID>" ip="<IP>" capabilities='[{"type": "OnOff", "value": false}]'
# Set brightness (1-100, lights only)
npx mcporter call tapo.control_device id="<DEVICE_ID>" ip="<IP>" capabilities='[{"type": "Brightness", "value": 50}]'
# Set color (color lights only)
npx mcporter call tapo.control_device id="<DEVICE_ID>" ip="<IP>" capabilities='[{"type": "Color", "value": "Coral"}]'
# Set multiple capabilities at once
npx mcporter call tapo.control_device id="<DEVICE_ID>" ip="<IP>" capabilities='[{"type": "Color", "value": "Coral"}, {"type": "Brightness", "value": 50}]'Capture a still JPEG snapshot from a Tapo camera (~640x360). Automatically runs check_device first. Requires TAPO_MCP_CAMERA_USERNAME and TAPO_MCP_CAMERA_PASSWORD configured on the server (Camera Settings > Advanced Settings > Camera Account in the Tapo app).
npx mcporter call tapo.take_snapshot id="<DEVICE_ID>" ip="<IP>"list_devices first if you don't have a recent device list. Cache results for up to 30 minutes.id and ip from the list — never guess or hardcopy these values.id. Use the child id with the parent's ip.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.