Resource Review Bridge
Enables inspection of public Instagram posts, including carousel navigation, caption extraction, visible comments, and direct outbound links, returning a structured Evidence Packet.
Enables inspection of public Threads pages, including dismissing login overlays and extracting visible content into a structured Evidence Packet.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Resource Review BridgeReview this Instagram post and return an evidence packet: https://www.instagram.com/p/abc123/"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Resource Review Bridge
A small, read-only MCP server that lets ChatGPT inspect public Instagram, Threads, and web resources through a local browser, then return a schema-validated Evidence Packet.
Status: experimental local-first software. It is intended for a single user, not as a hardened multi-tenant crawling service. This project is not affiliated with Instagram, Threads, Meta, or Notion.
It is designed for a simple research workflow:
acquire the public source;
separate direct evidence from promotional claims;
discuss whether the resource is useful;
save it elsewhere only after explicit user approval.
Why this exists
Public social posts are often awkward for an AI chat to inspect reliably: login reminders obscure otherwise public content, carousels require navigation, and repeated attempts can fill the conversation with duplicated or irrelevant page text. Resource Review Bridge performs bounded acquisition first and sends a compact, structured Evidence Packet into the reasoning step.
The goal is to reduce wasted context and repeated failed attempts, which can improve token efficiency. It does not guarantee lower token use: screenshots, long captions, large carousels, and detailed evidence still consume model context.
flowchart LR
A[ChatGPT plugin] --> B[Secure MCP Tunnel]
B --> C[Resource Review Bridge]
C --> D[Isolated Playwright browser]
D --> E[Codex app-server]
E --> F[Validated Evidence Packet]
F --> ARelated MCP server: VibeLens
What it does
Exposes one MCP tool:
review_resource.Accepts public
httpandhttpsURLs only.Rejects credentials, localhost, private IPs, and non-web schemes.
Uses an unsigned-in, temporary Playwright browser context.
Dismisses non-blocking Instagram Close/X login reminders.
Attempts one safe backdrop dismissal for a Threads login overlay.
Reads up to 12 carousel items, a bounded visible comment set, and 3 direct outbound pages.
Preserves the visible original caption in a dedicated
captionfield without reconstructing missing text.Returns a strict Evidence Packet with claims, evidence IDs, read states, and limitations.
Allows one active job, two bounded attempts, idempotent request IDs, and 24-hour local retention.
Runs Codex in a read-only sandbox without interactive approvals.
Requirements
Python 3.9 or newer.
Node.js and npm.
A local Codex executable, either on
PATH, supplied withRESOURCE_REVIEW_CODEX, or bundled with the ChatGPT macOS app.Access to OpenAI Secure MCP Tunnels for ChatGPT integration.
The repository does not include Tunnel, Cloudflared, browser, or Codex binaries.
Installation
These instructions set up a private, local developer-mode connection through OpenAI Secure MCP Tunnel. Secure MCP Tunnel keeps the MCP server off the public internet. It is intended here for private use and testing, not public plugin distribution.
1. Check the prerequisites
You need:
macOS or another local environment that can run the scripts in this repository;
Python 3.9 or newer;
Node.js and npm;
an authenticated local Codex executable, or the ChatGPT macOS app with its bundled Codex executable;
ChatGPT developer mode access;
an OpenAI Platform tunnel with Tunnels Read + Use permission;
a Tunnel runtime API key.
Creating or editing a tunnel requires Tunnels Read + Manage permission. ChatGPT developer mode and Platform tunnel permissions are separate.
2. Download the project
git clone https://github.com/I-not-die-yet/resource-review-bridge.git
cd resource-review-bridge3. Install the browser dependency
npm ci
npx playwright install chromiumThe repository has no third-party Python package dependency. Do not place API keys, Tunnel profiles, or other credentials inside the repository.
4. Run the local tests
python3 -m unittest discover -s tests -vAll tests should pass before connecting the bridge to ChatGPT. The tests use fakes and temporary SQLite files; they do not access private accounts or the network.
5. Confirm the MCP server starts
python3 -m resource_review_bridge.server --stdio \
--state ./work/resource-review-state.sqliteThe process waits for MCP input on standard input. Press Control+C after this smoke test.
If Codex is not found automatically, set RESOURCE_REVIEW_CODEX to the executable path before starting the server. The supplied wrapper automatically checks the standard ChatGPT macOS app locations.
6. Configure Secure MCP Tunnel
Download the latest tunnel-client from OpenAI Platform tunnel settings or the latest official openai/tunnel-client release. Keep the binary and its profile outside this repository.
Start with the client's current built-in instructions:
/path/to/tunnel-client help quickstartCreate a local stdio profile using your own runtime API key and Tunnel ID. Use the absolute path to this repository's wrapper as the MCP command:
export CONTROL_PLANE_API_KEY="your-runtime-api-key"
/path/to/tunnel-client init \
--sample sample_mcp_stdio_local \
--profile resource-review \
--tunnel-id your-tunnel-id \
--mcp-command "/absolute/path/to/resource-review-bridge/scripts/run-resource-review-mcp"Validate the profile, then start it:
/path/to/tunnel-client doctor --profile resource-review --explain
/path/to/tunnel-client run --profile resource-reviewKeep that terminal window open. Run only one copy of the profile at a time. App discovery and calls to review_resource depend on the client remaining connected.
7. Add the private plugin in ChatGPT
Enable Developer mode in ChatGPT under Settings → Security and login.
Open Plugins, select the plus button, and create a developer-mode plugin.
Set the connection type to Tunnel.
Select the tunnel you created, or enter its Tunnel ID if it is not listed.
Name the plugin
Resource Review Bridgeand complete the custom MCP server acknowledgement.
If the tunnel is missing, confirm that it is associated with the target ChatGPT workspace and that your account has Tunnels Read + Use permission.
Test the installation by asking ChatGPT to use review_resource on a public URL. A successful response contains a schema-validated Evidence Packet. The first live request may consume the Codex allowance associated with the local Codex session.
Updating
After pulling a new version, reinstall the locked browser dependencies and restart the single running Tunnel process:
git pull
npm ciThe wrapper derives the repository location at runtime, creates local state under work/, and locates the Codex executable.
Configuration
Variable | Purpose |
| Explicit Codex executable path or command |
| Explicit Node.js executable path |
| Explicit Playwright package directory |
| SQLite state file path |
When no browser variables are set, the bridge checks the repository's node_modules first and then common local Codex runtime locations.
Suggested ChatGPT project workflow
The reusable AI Tools Log instructions are in prompts/ai-tools-log-project-instructions.md. They tell ChatGPT to review evidence first, give a concise judgment, discuss it, and write to Notion only after explicit approval.
Test
python3 -m unittest discover -s tests -vTests use fakes and temporary SQLite files. They do not access the network, private accounts, or model usage.
Inspect the latest terminal job without printing retained evidence:
python3 -m resource_review_bridge.server --status \
--state ./work/resource-review-state.sqliteRecovery and error states
A job left running for more than 15 minutes is changed to stale_interrupted before a new job is admitted. Failures after admission always become terminal states:
browser failure:
acquisition_failed;Codex generation failure:
evidence_generation_failed;schema failure:
invalid_evidence_packet;unexpected failure:
internal_error.
This prevents a failed review from permanently blocking later requests as busy.
Security and privacy
The tool is read-only and exposes no general shell or filesystem action.
Acquired page text is untrusted evidence, never an instruction.
Downloads, forms, login, likes, comments, follows, and posting are not allowed.
Local screenshots and SQLite state may contain source content. They are stored outside version control and should be deleted according to your retention needs.
Snapshot text and screenshots are sent to the user's Codex service for Evidence Packet generation. Review only material you are permitted to process this way.
The network policy blocks requests to local and private-network addresses before navigation and during browser subrequests.
See SECURITY.md for disclosure guidance and operational limits.
Verification status
Unit tests cover URL policy, packet validation, job recovery, idempotency, error finalization, and the single-tool MCP surface.
A public Instagram carousel was read after dismissing its login reminder; the caption, carousel, visible comments, and direct links produced a valid Evidence Packet.
A live Secure MCP Tunnel and ChatGPT plugin request returned the packet to the originating conversation.
Threads public pages were acquired, but the backdrop-dismiss branch remains code-reviewed rather than live-triggered.
Known limitations
Instagram and Threads markup can change without notice.
Publicly visible comments are bounded and may be incomplete.
Evidence generation consumes the user's existing Codex allowance.
The current MCP call remains open until completion. There is no durable MCP Apps completion card for calls that outlive the host request.
This project does not bypass authentication, paywalls, CAPTCHAs, or access controls.
Users are responsible for following applicable laws and each source site's terms.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Browser-local and CLI static evidence for deployed AI model artifacts.
Real-time fact-check, citation verification, and source-freshness for AI agents.
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to inspect web pages, monitor network requests, extract HTML, analyze console output, and examine DOM elements in real-time through a Playwright-powered browser.11 npm7MIT
- AlicenseAqualityBmaintenanceEnables AI coding assistants to visually inspect local web pages by providing screenshots, console errors, and sanitized DOM snapshots.13 npmMIT
- AlicenseAqualityBmaintenanceEnables AI agents to capture screenshots, scrape structured page content, and run automated visual checks on live websites via a headless Chromium browser.3MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to control a local Chromium browser via CDP for page snapshots, screenshots, human-like interactions, autonomous crawling, API/GraphQL reconnaissance, authenticated differential testing, and Burp-like intercept, repeater, and intruder workflows with scope enforcement and audit logging.MIT