Use this guide when installing, configuring, or verifying TweetClaw in OpenClaw. It is optimized for agent retrieval and keeps the setup path short, current, and public-safe.
TweetClaw is the @xquik/tweetclaw OpenClaw plugin for Xquik X/Twitter workflows. It registers 2 structured tools:
explore: free local catalog search with no network request.tweetclaw: live endpoint invoker for catalog-listed Xquik API paths.
The plugin can install before credentials exist. Without credentials, explore remains usable and live calls return setup guidance.
Install the published package:
openclaw plugins install npm:@xquik/tweetclawTweetClaw publishes npm-first install metadata with the exact @xquik/tweetclaw package version. The npm: selector keeps source selection explicit. Bare @xquik/tweetclaw still installs from npm during OpenClaw's launch cutover, but use the ClawHub page for browsing only while its listing lags behind npm. Avoid repo-folder installs for release-like verification because they do not represent the published artifact.
Current source metadata targets OpenClaw 2026.6.11 or newer. Update OpenClaw before testing source builds or freshly packed artifacts from this repository.
If OpenClaw runs with OPENCLAW_NIX_MODE=1, plugin lifecycle mutators are
disabled. Install or update TweetClaw through your Nix OpenClaw source instead
of openclaw plugins install or openclaw plugins update.
For routine upgrades, keep the tracked install source and update the installed plugin id:
openclaw plugins update tweetclawFor reproducible production installs, pin a published npm version:
openclaw plugins install npm:@xquik/tweetclaw@<version> --pinOpenClaw keeps pinned npm records on the selected version during later plugins update tweetclaw runs. Move back to the default npm release line with openclaw plugins update @xquik/tweetclaw when you want the current stable package again.
After install or update, inspect the runtime and bundled skill:
openclaw plugins inspect tweetclaw --runtime --json
openclaw skills info tweetclawExpected result:
- The
tweetclawplugin loads. - The
exploretool is available. - The optional
tweetclawtool is available when the OpenClaw tool profile allows it. - The
before_tool_callapproval hook is registered for riskytweetclawcalls. - The
xtrendscommand is registered. - The TweetClaw skill is visible to the agent.
Managed Gateways with config reload enabled can restart automatically after an install or update. If the Gateway is unmanaged or reload is disabled, run openclaw gateway restart before runtime inspection.
For packaged release checks, validate the installed artifact instead of the source checkout:
npm pack
openclaw plugins install npm-pack:./xquik-tweetclaw-<version>.tgz
openclaw plugins inspect tweetclaw --runtime --jsonopenclaw plugins build --entry ./dist/index.js --check and openclaw plugins validate --entry ./dist/index.js are the generated metadata lane for simple defineToolPlugin packages. TweetClaw uses definePluginEntry because it registers tools, a command, an approval hook, and an event-polling service, so the package smoke above is the authoritative local release proof.
Maintainers should also run the deterministic source gate after building:
npm run check-openclaw-platform-fitnessThat gate checks package metadata, the OpenClaw host peer, runtime entrypoints, manifest tool ownership, optional-tool metadata, command aliases, approval-hook shape, setup docs, workflow docs, and the packaged skill.
For slow install or inspect debugging, keep machine-readable output and send lifecycle timings to stderr:
OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1 openclaw plugins inspect tweetclaw --runtime --jsonMany OpenClaw profiles keep a coding-focused tool set by default. If the skill is visible but the agent cannot call TweetClaw tools, add the 2 tool names to tools.alsoAllow:
openclaw config set tools.alsoAllow '["explore", "tweetclaw"]'Use tools.alsoAllow instead of replacing the whole tool profile unless strict allowlist mode is intentional.
OpenClaw optional tools and plugin permission requests solve different problems. TweetClaw uses both:
tweetclawis optional so the model does not see the live endpoint invoker until the user opts in.- The plugin approval hook runs after the model selects
tweetclawand before OpenClaw executes the call.
TweetClaw requests approval for write-like, private, paid, recurring, extraction, monitor, webhook, and account-scoped calls. Approval prompts offer one-time approval or deny; they do not offer persistent trust for future social-account actions.
TweetClaw has 3 modes:
| Mode | Required config | Use it for |
|---|---|---|
| Explore-only | none | Install checks, docs, and endpoint discovery |
| API key | plugins.entries.tweetclaw.config.apiKey |
Account-backed reads, writes, extraction, monitors, webhooks, media, commands, and account status |
| MPP | plugins.entries.tweetclaw.config.tempoSigningKey |
31 read-only pay-per-use endpoints with no Xquik account |
Store credentials in OpenClaw plugin config. Never paste API keys, signing keys, passwords, cookies, account IDs, or payment material into chat, docs, issues, logs, screenshots, or tool arguments.
API key mode:
openclaw config set plugins.entries.tweetclaw.config.apiKey "$XQUIK_API_KEY"MPP mode:
npm i mppx viem
openclaw config set plugins.entries.tweetclaw.config.tempoSigningKey "$MPP_SIGNING_KEY"The default API base URL is https://xquik.com. Only change it for a trusted Xquik-compatible HTTPS API:
openclaw config set plugins.entries.tweetclaw.config.baseUrl "https://xquik.com"TweetClaw rejects non-HTTPS URLs and URLs with embedded credentials.
Polling is optional runtime behavior for monitor events the user already created. It does not create monitors, scan targets, post content, or change account state.
Disable polling in isolated install tests unless notification delivery is under test:
openclaw config set plugins.entries.tweetclaw.config.pollingEnabled falseThe default interval is 60 seconds. The config schema and runtime normalize the interval to a minimum of 5 seconds:
openclaw config set plugins.entries.tweetclaw.config.pollingInterval 60Use explore before live calls:
{ "query": "tweet search", "limit": 5 }For MPP mode, filter for eligible endpoints:
{ "mpp": true, "method": "GET", "limit": 25 }For live calls, pass only catalog-listed /api/v1/... paths. Put query parameters in the query object, not inside the path string.
If install fails, verify OpenClaw is at least 2026.6.11 for current source builds and install the published package.
If tools are not visible, inspect runtime loading with --runtime --json and set tools.alsoAllow for explore and tweetclaw.
If live calls return setup guidance, configure either apiKey or tempoSigningKey.
If an MPP call is rejected, use explore with mpp: true. MPP covers 31 read-only endpoints. Media download is not MPP-eligible because it creates account-tied gallery links and requires authenticated access. The MPP user media endpoint returns media-tweet timeline posts, not media files.
If a path is rejected, remove embedded query strings and fragments from the path, then provide query fields through the structured query object.