X Research But Cheaper

Security checks across malware telemetry and agentic risk

Overview

This appears to be a coherent read-only X/Twitter research tool, with normal cautions around its API key, provider calls, local caching, and npx-based runner.

This skill looks reasonable if you intend to use TwitterAPI.io for X/Twitter research. Before installing, make sure you are comfortable with paid API usage, provider visibility into your search queries, local cache/watchlist files, and the `npx tsx` runner; set the API key securely and review broad agent-generated searches.

VirusTotal

64/64 vendors flagged this skill as clean.

View on VirusTotal

Risk analysis

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

#
ASI02: Tool Misuse and Exploitation
Low
What this means

A broad or repeated research request could consume TwitterAPI.io credits or retrieve more public X data than the user intended.

Why it was flagged

Searches can perform repeated provider API calls based on command flags. This is purpose-aligned, but it is a paid API workflow and users should keep generated page counts and deep-research commands scoped.

Skill content
const pages = quick ? 1 : nflag('pages', 3); ... for (let p = 0; p < effectivePages; p++) { const result = await searchTweets(q, cursor, queryType);
Recommendation

Review agent-generated commands before deep searches, set explicit `--pages` and `--limit` values, and consider adding a hard page cap in the code.

#
ASI04: Agentic Supply Chain Vulnerabilities
Low
What this means

Running the skill may depend on an external, unpinned package runner, which adds normal npm supply-chain exposure.

Why it was flagged

The documented command uses `npx tsx` while the skill does not vendor or pin `tsx`; if it is not already installed, npx may run a package from npm at runtime.

Skill content
npx tsx x-search.ts search "<query>" [options] ... No `npm install` needed — zero dependencies.
Recommendation

Install and pin a reviewed `tsx` version locally, or ship a compiled JavaScript entry point so the skill does not rely on dynamic npx resolution.

#
ASI03: Identity and Privilege Abuse
Low
What this means

The API key authorizes paid TwitterAPI.io usage, so misuse or logging of the environment could expose the account or consume credits.

Why it was flagged

The skill reads a provider API key from the environment and uses it in TwitterAPI.io requests. This is expected for the integration and no hardcoded or printed key is shown in the visible code.

Skill content
const k = process.env.TWITTERAPI_KEY; ... return { 'X-API-Key': getKey(), 'Content-Type': 'application/json' };
Recommendation

Set the key as an environment variable rather than inline in commands, monitor provider usage, and avoid sharing agent logs that may include environment setup details.

#
ASI07: Insecure Inter-Agent Communication
Info
What this means

Search terms and requested accounts or tweets are visible to the provider, even though the data being retrieved is generally public X/Twitter content.

Why it was flagged

The tool sends search queries, usernames, tweet IDs, and other request parameters to the disclosed TwitterAPI.io provider. This is central to the skill's purpose.

Skill content
const BASE = 'https://api.twitterapi.io'; ... const res = await fetch(url.toString(), { headers: headers() });
Recommendation

Do not put private or confidential information into search queries unless you are comfortable sending it to TwitterAPI.io.

#
ASI06: Memory and Context Poisoning
Low
What this means

Later sessions or local users with filesystem access may see cached research results or saved outputs, and stale cached results may influence future analysis until cleared.

Why it was flagged

Fetched API results are stored in a local cache under the skill directory. This is disclosed and used to reduce repeat API charges, but it creates persistent local research artifacts.

Skill content
const CACHE_DIR = join(__dirname, '..', '..', 'data', 'cache'); ... writeFileSync(file, JSON.stringify(data));
Recommendation

Use the documented cache clear command when needed and avoid saving sensitive research outputs on shared machines.