WRENCH

Provider capability reference · Wrench 0.9.0

Contacts, email, and messages are provider-specific capabilities.

Wrench currently supports Gmail contacts, inbox search, thread reading, and private thread clipping through official Google APIs. Other contact and messaging providers expose narrower reviewed surfaces. A missing or capture-required operation stays unavailable rather than falling back to general browser control.

This reference describes v0.9.0 and was checked against the bundled public adapter manifests for that immutable release. Run wrench capabilities --json for the exact state installed on your machine.

Current contact and messaging coverage

ProviderContactsInbox and messagesImportant limit
Gmail officialGoogle People connections plus bounded directional Gmail statisticsObserved inbox or bounded search listing, exact thread read, and private thread clipping with attachmentsCounts and dates expose completeness; scanning is bounded and reading does not mark mail seen
LinkedIn officialObserved first-degree connections with exact account binding and locale-selection evidenceNo ordinary inbox operation through the official API; consumer-web inbox operations remain capture-requiredRequires approved r_1st_connections and r_liteprofile; message statistics are unavailable
Instagram webObserved unique non-viewer participants from one reviewed first Direct inbox pageObserved bounded first inbox summary page; individual thread read remains capture-requiredContact set and message statistics are explicitly incomplete; no acknowledgement or presence request is issued
WhatsApp linked deviceObserved bounded page from the private, quiescent Whatsmeow contact storeObserved bounded local linked-device conversation list and exact conversation readNo new WhatsApp connection or acknowledgement is emitted; directional contact statistics are unavailable
Facebook webCapture-required reservation for friends or Messenger participantsInbox listing and conversation reading are capture-requiredActor binding, paging, completeness, acknowledgement, and Messenger transport still require review
TelegramNot installedNot installedRequires a reviewed TDLib user-session lifecycle; Wrench does not substitute the Bot API or claim contact access

This matrix covers the contact and messaging providers above. Wrench also ships other provider adapters and operations. Their current installed contract states remain discoverable through the CLI rather than being generalized from this table.

Gmail contacts, inbox search, thread reads, and clips

Gmail uses the official Gmail and Google People APIs. Its auth locator must match a current-user-owned mode-0600 token document with the exact provider, subject, and sorted contacts.readonly and gmail.readonly scopes.

wrench gmail contacts.list --auth gmail-main \
  --input '{"limit":20,"stats_scan_limit":100}' --json

wrench gmail messaging.list --auth gmail-main \
  --input '{"view":"inbox","limit":25}' --json

wrench gmail messaging.list --auth gmail-main \
  --input '{"view":"search","query":"from:example.com has:attachment","limit":25}' --json

wrench gmail messaging.read --auth gmail-main \
  --input '{"thread_id":"thread-id-from-list"}' --json

Contact statistics report sent and received counts plus the maximum internal date across each bounded matched-message scan. A count is complete, a lower bound, or null; dates carry the same basis and completeness evidence. limit * stats_scan_limit cannot exceed 2,000 per-direction query candidates before paired metadata reads.

Inbox and search rows include a provider-derived threadUrl and the exact messaging.read input. Reading does not mark a message seen or emit an acknowledgement. Pass the returned URL to wrench read or wrench clip with the same auth locator. Clips default to private Wrench state and can include every MIME attachment as content-addressed, integrity-recorded objects. The capture guide documents the plaintext export and attachment boundary.

LinkedIn, Instagram, and WhatsApp contacts keep their missing data visible

wrench linkedin contacts.list --auth linkedin-main \
  --input '{"start":0,"count":25}' --json

wrench instagram-web contacts.list --auth instagram-main \
  --input '{"thread_limit":25,"contact_limit":50}' --json

wrench whatsapp-web contacts.list --auth whatsapp-main \
  --input '{"limit":50}' --json

LinkedIn's official Connections API does not expose ordinary inbox history, so Wrench reports directional statistics as unavailable. Its separate consumer-web contact and inbox reservations do not inherit authority from the official adapter.

Instagram projects only participants visible in one reviewed first inbox page. Provider pagination and local thread or contact limits remain incomplete. WhatsApp reads one page from the authenticated account owner's private, quiescent contact store without opening a connection; it does not reinterpret a linked-device message cache as complete account-owned history.

Verified reads can remain available locally

Successful R1 calls with a verified account subject can publish encrypted snapshots of the exact validated query and bounded output. Repeating the same operation with --cache-only can return the last verified state without opening a browser or provider connection.

A failed refresh does not erase the last good snapshot. Provider paging, completeness, and unsupported states remain explicit. WhatsApp revalidation reads its local linked-device projection; synchronizing that projection remains the separate explicit wrench auth sync <id> --once operation.