
uta-shield Remote (Barter-enabled)
io.github.eddyflores100-langPublished by GitHub account eddyflores100-langv0.3.0Updated Oct 29, 2026
Remote MCP firewall with barter protocol: identity, threat-intel, IoC lookup.
Overview
Remote MCP firewall and threat-intel server that gives agents IoC lookup, URL checks and text screening, and can wrap your own MCP server with identity, ACL…
- What you can do
- Look up indicators of compromise, check URLs and screen text against a bundled phishing campaign feed
- List campaigns and inspect feed metadata, with evidence attached to each verdict
- Wrap an upstream MCP server behind a proxy that verifies agent HMAC signatures and enforces per-tool ACLs
- Apply inbound threat-intel blocking, outbound redaction or blocking, two-tier rate limits and DLP masking
- Record per-call metering and a JSONL audit trail of decisions
- When to use it
- Useful when you publish an MCP server and want verified agent identity, per-tool authorization and audit logging in front of it, or when agents need to screen URLs, emails and tool output against a phishing threat feed.
- Requirements
- A remote endpoint at wall.utalabs.tech, or the npm package run locally on Node.js 18 or newer. The firewall mode needs a keys file of agent secrets and, for the audit endpoint, an admin token of at least 16 characters. No TLS termination is included, so it should sit behind your own reverse proxy.
Installation
In SourceWeft
- Open uta-shield Remote (Barter-enabled) in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.eddyflores100-lang%2Futa-shield-remote/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config.
{
"mcpServers": {
"uta-shield-remote-barter-enabled": {
"type": "http",
"url": "https://wall.utalabs.tech/mcp"
}
}
}README
uta-shield
Provider-side firewall for MCP servers + PhishGuard threat-intel MCP server — in one zero-dependency package.
Landing / docs: https://wall.utalabs.tech
Every gateway in the MCP security category (Lasso, Mintive, Obot, agentgateway, Cequence) protects the consumer — the company whose employees connect agents to third-party servers. Nothing protects the operator — the SaaS that publishes its MCP server and exposes its database to every anonymous agent on the internet.
uta-shield is the mirror side: you wrap YOUR MCP server and gain verified identity, per-tool authorization, threat-intel blocking (in AND out), two-tier rate limits, DLP masking, proxy hardening, per-call metering and a JSONL audit trail — without touching your server code.
Backed by a real, documented campaign: the taikotalent phishing case (fake-recruiter malware against open-source developers, domain taken down in ~12h, C2 infra tracked). The bundled feed ships its 23 verified IOCs.
Quickstart
Verified identity (v0.2.0, ACL strict mode v0.2.2)
Identity is no longer declared-only. Agents present three headers:
- Valid signature →
ALLOW_VERIFIED(per-agent rate buckets, ACL enforcement, metering). - Presented-but-invalid credentials →
REJECT_AUTH(401). Fail-closed, always. - No credentials →
REJECT_ANON(401) unless the operator passes--allow-anonymous. - Declared names (no signature) are labels only,
verified:false— they earn no per-agent rate bucket. - Per-tool ACL (
--acl-file): by default, agents absent from the map are unrestricted. For allow-list semantics, add--acl-deny-unlisted— unlisted agents get403 REJECT_FORBIDDENeven with a valid signature. The CLI refuses--acl-deny-unlistedwithout an ACL file (with no map, deny-unlisted would reject every agent)./healthdisclosesidentity.acl_deny_unlisted.
Signing a request (client side, any language):
The 8 layers
Honesty policy: this README marks exactly what ships. Layers 2 and 7 are design hooks — no inflated claims.
Proxy hardening (v0.2.1)
Known limitations (honest scope)
- Identity verification is HMAC-shared-secret (operator-issued keys). It authenticates agents to the operator; it is not a federated PKI.
/.well-known/agent.jsonorigin verification remains a supplementary hook. policy=logrecords outbound IOCs but passes them through — it exists for operators who explicitly opt in;redact(default) orblockare the safe choices.- Obfuscated-email and hex-secret DLP patterns are heuristic; false positives are possible (tune via
dlpoptions). - No TLS termination — run behind your existing reverse proxy (Caddy/nginx/certbot).
- The feed ships ONE documented campaign (23 IOCs). Feed data is CC-BY-4.0; extend it with your own campaigns.
Why zero dependencies?
A security product with 47 transitive dependencies is an attack surface, not a defense. uta-shield is ~1,600 lines of auditable Node.js ≥18 (ESM), including a hand-rolled MCP stdio implementation (newline-delimited JSON-RPC 2.0). npm pack ≈ 108 kB unpacked / 54 kB tarball.
The bundled feed
feed/iocs.json (schema pg/1) ships campaign taikotalent-2026-10: 23 IOCs across 9 types — phishing domain (down via registrar clientHold), live C2 domains behind Cloudflare, sender IP, fake recruiter email, stager URLs, sha256 of payloads, wildcard second-stage path (/var/tmp/.kdm.*), mutex name — with MITRE ATT&CK mapping (T1566.002, T1656, T1204.002, T1059.004, T1027, T1071.001, T1070.004, T1583.001) and per-IOC context. Every verdict carries this evidence so downstream agents can reason about WHY they were blocked.
Feed data CC-BY-4.0 from the public case repo. Update/extend it by adding a campaign object — schema validated by uta-shield verify-feed.
As an MCP server (for agents, not just operators)
Agents get the intel as tools: lookup_ioc(value), check_url(url) (feed + advisory heuristics), screen_text(text), list_campaigns(), feed_info(). Every response is DATA — the server never fetches or executes anything.
Commercial
Contact: AliceLabs LLC — [email protected]
Test (reproducible)
Independent execution: .github/workflows/tests.yml runs the full suite
on GitHub's own runners (Node 20/22/24) on every push — the results are public
and don't depend on this file's claims.
Test results for v0.2.2: see EVIDENCE.md (command, Node version, full runner summary).
Migration v0.1.0 → v0.2.0 (breaking)
wrapwithout--keys-file/UTA_SHIELD_KEYS/--allow-anonymousrefuses to start (fail-closed default).- Rate limits for unverified callers are keyed by IP; declared agent names no longer create per-agent buckets.
gateOutdefault behavior changed from pass-through toredact. SetoutboundPolicy:"log"for v0.1.0 behavior.- New verdicts in the audit stream:
ALLOW_VERIFIED,REJECT_AUTH,REJECT_FORBIDDEN,OUT_REDACTED,OUT_BLOCKED,UPSTREAM_ERROR.
Migration v0.2.0 → v0.2.1 (breaking)
GET /auditno longer works without credentials. Without--admin-token(orUTA_SHIELD_ADMIN) it answers 404; with a token it requires thex-uta-adminheader. Dashboards that scraped/auditanonymously must present the operator token. The response flagx-uta-shieldis now the exact core verdict —policy=logusers will seeOUTBOUND_INTELinstead of the previously mislabeled flag.
Migration v0.2.1 → v0.2.2
- Additive.
--acl-deny-unlistedenables opt-in strict ACL (allow-list semantics); the CLI refuses to start with that flag but no--acl-file(fail-closed). New audit verdicts:BODY_TOO_LARGE(both 413 paths — v0.2.1 addedAUDIT_DISABLED/AUDIT_DENIED). Public CI added — nothing else changes for existing operators.
Licensed for use — see LICENSE (license for use / licencia de uso). © 2026 AliceLabs LLC. Commercial exceptions (white label, OEM, redistribution, managed service): [email protected]
Source: README.md at commit e31cbd8
Tools
0Version history
1- v0.3.0LatestOct 29, 2026
Score
75% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listedRequired15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.