<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andrew Gibbs</title>
    <description>The latest articles on DEV Community by Andrew Gibbs (@relaysh_aea8bcf38177).</description>
    <link>https://dev.to/relaysh_aea8bcf38177</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3933321%2Fd546320c-b664-4cca-b592-7d7d456e4619.png</url>
      <title>DEV Community: Andrew Gibbs</title>
      <link>https://dev.to/relaysh_aea8bcf38177</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/relaysh_aea8bcf38177"/>
    <language>en</language>
    <item>
      <title>34 malicious packages discovered targeting Solana developers: Steals wallet credentials and SSH keys</title>
      <dc:creator>Andrew Gibbs</dc:creator>
      <pubDate>Sun, 31 May 2026 22:10:58 +0000</pubDate>
      <link>https://dev.to/relaysh_aea8bcf38177/34-malicious-packages-discovered-targeting-solana-developers-steals-wallet-credentials-and-ssh-keys-53db</link>
      <guid>https://dev.to/relaysh_aea8bcf38177/34-malicious-packages-discovered-targeting-solana-developers-steals-wallet-credentials-and-ssh-keys-53db</guid>
      <description>&lt;p&gt;Socket Security just published research on TrapDoor malware: 34 malicious packages targeting developers building on Solana, Aptos, and Sui. If you've installed any npm or PyPI packages from these ecosystems recently, your wallet may already be at risk even if nothing looks wrong yet.&lt;/p&gt;

&lt;p&gt;How it works:&lt;/p&gt;

&lt;p&gt;The packages execute on install. They silently harvest crypto wallet credentials, SSH keys, cloud credentials, browser-saved passwords, and environment variables — then exfiltrate everything to attacker infrastructure. The theft of your wallet doesn't happen immediately. Attackers wait for the right moment: a large deposit, a token unlock, a liquidity event.&lt;/p&gt;

&lt;p&gt;Three things to do right now:&lt;/p&gt;

&lt;p&gt;Check if your developer email appeared in an infostealer log: Stealer logs from infected machines are actively traded on criminal Telegram channels. If your email is in one, your credentials from that machine are compromised regardless of whether your wallet looks fine today&lt;/p&gt;

&lt;p&gt;Audit your browser extensions: TrapDoor harvests browser data. Malicious extensions re-harvest credentials on every login after initial infection. Remove anything you don't actively use or can't verify&lt;/p&gt;

&lt;p&gt;Move assets to a fresh wallet on a clean device if you installed packages from affected ecosystems in the last 30 days and can't confirm they were clean&lt;/p&gt;

&lt;p&gt;The on-chain monitoring fires after the transfer is already out. The attack starts in your dev environment, not on the blockchain.&lt;/p&gt;

&lt;p&gt;Full breakdown with remediation steps: &lt;a href="https://medium.com/p/a4343023b319" rel="noopener noreferrer"&gt;https://medium.com/p/a4343023b319&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>infosec</category>
      <category>npm</category>
      <category>security</category>
    </item>
    <item>
      <title>Your Okta Is Only As Strong As Your SIM Card</title>
      <dc:creator>Andrew Gibbs</dc:creator>
      <pubDate>Mon, 18 May 2026 21:32:52 +0000</pubDate>
      <link>https://dev.to/relaysh_aea8bcf38177/your-okta-is-only-as-strong-as-your-sim-card-373</link>
      <guid>https://dev.to/relaysh_aea8bcf38177/your-okta-is-only-as-strong-as-your-sim-card-373</guid>
      <description>&lt;p&gt;Most security teams sleep well knowing MFA is enforced in Okta, &lt;br&gt;
Azure AD, or Duo. Then someone ports an employee's phone number to &lt;br&gt;
a burner SIM in under 10 minutes and the identity perimeter &lt;br&gt;
unravels silently.&lt;/p&gt;

&lt;p&gt;This is the SIM swap blind spot in enterprise identity. Almost &lt;br&gt;
nobody is talking about it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The attack chain&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Attacker identifies target via LinkedIn&lt;/li&gt;
&lt;li&gt;Calls carrier, provides scraped personal data (DOB, address, 
last 4 SSN — all available from prior breaches)&lt;/li&gt;
&lt;li&gt;Carrier ports the number. Target loses mobile service.&lt;/li&gt;
&lt;li&gt;Attacker hits the Okta portal, triggers SMS OTP or recovery&lt;/li&gt;
&lt;li&gt;Code arrives on attacker's device. Session established.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Total time: under 30 minutes. No malware. No zero-day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where Okta and SMS intersect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SMS OTP as primary factor&lt;/strong&gt; — Many Okta deployments enable SMS &lt;br&gt;
because app-based authenticators create support tickets. If SMS is &lt;br&gt;
an allowed factor, a SIM-swapped number gives the attacker a live &lt;br&gt;
OTP delivery channel. Your policy is satisfied. Access granted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Account recovery fallback&lt;/strong&gt; — Even if primary MFA uses Okta &lt;br&gt;
Verify or TOTP, recovery often falls back to SMS. That single &lt;br&gt;
fallback path is all an attacker needs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Downstream email compromise&lt;/strong&gt; — Gmail and Outlook offer SMS &lt;br&gt;
account recovery. SIM swap the employee → reset their Google &lt;br&gt;
account → own the email Okta is registered to. Game over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The carrier layer is outside Okta's scope&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Okta, Microsoft, and Duo will tell you to use phishing-resistant &lt;br&gt;
MFA. They're right. But the carrier layer is invisible to every &lt;br&gt;
identity platform — always has been.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detecting it with code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SIM swap detection requires querying carrier data directly. Here's &lt;br&gt;
how to check whether a number has been ported before triggering &lt;br&gt;
account recovery or a high-risk action:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REST API (Python)&lt;/strong&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
python
import requests

def check_sim_swap(phone: str) -&amp;gt; dict:
    """
    Returns swapped (bool), swap timestamp, and current carrier.
    Call before any high-risk action gated by SMS-based auth.
    """
    response = requests.post(
        "https://xhh3tfrhng.execute-api.us-east-1.amazonaws.com/prod/v1/sim-swap",
        headers={"x-api-key": "YOUR_RAPIDAPI_KEY"},
        json={"phone": phone}
    )
    return response.json()

result = check_sim_swap("+14155551234")

if result.get("swapped"):
    print(f"⚠️  SIM swap detected at {result['swap_timestamp']}")
    print(f"   Current carrier: {result['carrier']}")
    # Block account recovery, alert security team
else:
    print("✓ No SIM swap detected — safe to proceed")

**MCP Server (for AI agents)**
If you're building agents that handle user identity or account
actions, add SIM swap detection as a pre-flight check:

pip install relayshield_mcp

from plugins.relayshield.relayshield_game_plugin import relayshield_functions
# Drop into any GAME agent worker — check_sim_swap is ready to call

**Where to gate it in your stack**
def okta_account_recovery_hook(user_phone: str) -&amp;gt; bool:
    """
    Pre-recovery hook — block if SIM swap detected in last 24hrs.
    Wire this into your Okta inline hook or recovery flow.
    """
    result = check_sim_swap(user_phone)

    if result.get("swapped"):
        # Log security event, require in-person verification
        security_alert(user_phone, result)
        return False  # Block recovery

    return True  # Safe to proceed

**What to fix right now**
**Audit factor enrollment** — find every Okta user with SMS
enabled
**Disable SMS as primary factor** — enforce Okta Verify or TOTP
**Harden recovery flows** — no SMS fallback for privileged
accounts
**Add detection** — query carrier data before account recovery
or high-risk actions
**Brief your help desk** — social engineering is the human
version of the same attack

**The bottom line**
Enterprise MFA is only as strong as its weakest factor. For most
organizations, that weakest factor is a phone number on a carrier
database that can be socially engineered in minutes.

The carrier layer is invisible to every identity platform. That's
the gap. Now you know where it is — and how to close it.

*SIM swap detection API: [RelayShield on RapidAPI](https://rapidapi.com/relayshielduser/api/relayshield-security-intelligence) — free tier available.*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>security</category>
      <category>identity</category>
      <category>mfa</category>
      <category>appsec</category>
    </item>
    <item>
      <title>5 Crypto Security Signals in One API Call — Wallet Risk, Token Honeypots, SIM Swap and More</title>
      <dc:creator>Andrew Gibbs</dc:creator>
      <pubDate>Fri, 15 May 2026 14:12:03 +0000</pubDate>
      <link>https://dev.to/relaysh_aea8bcf38177/5-crypto-security-signals-in-one-api-call-wallet-risk-token-honeypots-sim-swap-and-more-3eah</link>
      <guid>https://dev.to/relaysh_aea8bcf38177/5-crypto-security-signals-in-one-api-call-wallet-risk-token-honeypots-sim-swap-and-more-3eah</guid>
      <description>&lt;p&gt;If you're building a crypto app, a trading bot, a DeFi dashboard, or an AI agent that touches wallets or tokens, you need security signals baked in — not bolted on after something goes wrong.&lt;/p&gt;

&lt;p&gt;RelayShield Security Intelligence is a single REST API that gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wallet risk scoring&lt;/strong&gt;: Multi-chain (EVM, Solana, TON)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Token honeypot + rug pull detection&lt;/strong&gt;: Before your users ape in&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NFT contract risk scanning&lt;/strong&gt;: Ownership, minting, verification flags&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SIM swap detection&lt;/strong&gt;: Live carrier-layer data via Twilio Lookup v2&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email breach checking&lt;/strong&gt;: 13B+ compromised records&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No SDKs. Plain JSON in, plain JSON out. Available on RapidAPI (subscription) or x402 USDC micropayments on Base (pay per call, no subscription needed).&lt;/p&gt;

&lt;p&gt;Quickstart — Wallet Risk in Python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://relayshield-security-intelligence.p.rapidapi.com/v1/wallet-risk&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;address&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0xYourWalletAddress&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x-rapidapi-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_RAPIDAPI_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x-rapidapi-host&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;relayshield-security-intelligence.p.rapidapi.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Works with EVM addresses, Solana public keys, and TON wallet addresses — the API auto-detects chain type.&lt;/p&gt;

&lt;p&gt;Quickstart — Token Security (Honeypot Check)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;chain_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# Ethereum mainnet — use 8453 for Base
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;contract_address&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0xTokenContractAddress&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://relayshield-security-intelligence.p.rapidapi.com/v1/token-security&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Returns honeypot status, buy/sell tax flags, ownership renounced, hidden owner, and more.&lt;/p&gt;

&lt;p&gt;Pay Per Call with x402 (No Subscription Needed)&lt;/p&gt;

&lt;p&gt;If you're building an agent or a low-volume integration and don't want a monthly subscription, the PAYG endpoints accept x402 USDC micropayments on Base:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/v1/payg/wallet-risk&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.15 USDC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/v1/payg/token-security&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.10 USDC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/v1/payg/nft-security&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.10 USDC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/v1/payg/wallet-screen-batch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.50 USDC (up to 10 addresses)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/v1/payg/breach&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.10 USDC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/v1/payg/sim-swap&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.25 USDC&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;x402 flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Call the endpoint with no payment header → receive &lt;code&gt;402&lt;/code&gt; + &lt;code&gt;PAYMENT-REQUIRED&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Pay USDC on Base to the address in the response&lt;/li&gt;
&lt;li&gt;Retry with &lt;code&gt;X-PAYMENT&lt;/code&gt; header containing payment proof&lt;/li&gt;
&lt;li&gt;API verifies via Coinbase x402 facilitator → returns result&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use Cases&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DeFi dashboard&lt;/strong&gt;: Screen every inbound token for honeypots automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trading bot&lt;/strong&gt;: Run wallet-risk on counterparties before executing swaps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI agent&lt;/strong&gt;: Give your Claude/GPT agent live security intelligence via MCP or direct API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wallet app&lt;/strong&gt;: Alert users when their SIM is swapped before their 2FA is compromised&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portfolio tracker&lt;/strong&gt;: Flag high-risk wallets and scam tokens in real time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MCP Server (Claude / AI Agents)&lt;/p&gt;

&lt;p&gt;If you're building with Claude or want to use these signals inside Claude Desktop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;relayshield-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exposes all endpoints as native MCP tools — no API calls to write.&lt;/p&gt;

&lt;p&gt;Links&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RapidAPI listing&lt;/strong&gt; (subscribe + test in browser): &lt;a href="https://rapidapi.com/relayshield/api/relayshield-security-intelligence" rel="noopener noreferrer"&gt;RelayShield Security Intelligence&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API docs + landing page&lt;/strong&gt;: &lt;a href="https://relayshield.net" rel="noopener noreferrer"&gt;relayshield.net&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP package&lt;/strong&gt;: &lt;a href="https://pypi.org/project/relayshield-mcp" rel="noopener noreferrer"&gt;pypi.org/project/relayshield-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built by a 25-year telecom security professional. Questions welcome in the comments.&lt;/p&gt;

</description>
      <category>security</category>
      <category>cryptocurrency</category>
      <category>api</category>
      <category>python</category>
    </item>
  </channel>
</rss>
