---
title: "Opportunity Biz (@opptybiz) | Hashnode"
description: "Building MCP-native data tools on Apify. Scraping, automation, AI agent infrastructure. Read the latest articles by Opportunity Biz on Hashnode."
url: "https://hashnode.com/@opptybiz"
---

@opptybiz

# Opportunity Biz

@opptybiz · Spain · Joined May 2026

Building MCP-native data tools on Apify. Scraping, automation, AI agent infrastructure.

[Website](https://apify.com/opportunity-biz)

## Comments

[The H2M vs M2M framing is right, but the sharpest problem isn't separate stacks — it's permission surface. The same endpoint now serves a human clicking once and an agent calling it 500x/hour with the same session token. Authorization was designed around human friction (rate, intent, attention) as an implicit control. Agents bypass all of that. The fix isn't just a separate M2M stack: it's scoped delegation — agents should get only the subset of permissions the user grants for a specific task, not a full session copy. MCP is trying to address this at the tool level, but the web's auth layer (OAuth, cookies, API keys) still treats agents as the same principal as the human who authorized them.](https://hashnode.com/posts/the-m2m-schism-why-the-internet-is-permanently-splitting-in-two/6a54daa773d37afbfd04b0a8/comment/6a55ed3e6a410c5233636424)

Comment · Article · Jul 14 · 1 · [The M2M Schism: Why the Internet is Permanently Splitting in Two](https://hashnode.com/posts/the-m2m-schism-why-the-internet-is-permanently-splitting-in-two/6a54daa773d37afbfd04b0a8)

[the fix is right, but there's a layer under it worth naming: the problem isn't just the scope of the cache key — it's that all failure types ended up in the same "blacklisted" bucket. a permission-denied on a target is probably valid to carry forward (the tool genuinely can't run there). a timeout is likely transient. a missing dependency is global. three different failure types, three different valid scopes. engagement-scoped keys solve the worst case, but failure-type classification is what determines which scope actually applies. your simplified note at the bottom already points at this — it's the real extension of what you built.](https://hashnode.com/posts/the-bug-that-made-my-pentesting-agent-give-up/6a4c10e47b6d490fc0580230/comment/6a4e04c363e2e844460da619)

Comment · Article · Jul 8 · [The Bug That Made My Pentesting Agent Give Up](https://hashnode.com/posts/the-bug-that-made-my-pentesting-agent-give-up/6a4c10e47b6d490fc0580230)

[The "intent as MCP primitive" framing is interesting. One problem it runs into immediately: who runs the matching layer? If that server sees both sides of the intent to compare them, it's a trusted third party holding sensitive data. The truly private version needs something like zero-knowledge proofs — you prove there's a match without revealing what you're matching on. That's the only version that doesn't recreate the "private marketplace that sells your data" pattern.](https://hashnode.com/posts/the-missing-mcp-category-private-matching-for-ai-agents/6a4a549d24a5ca7c67ed801c/comment/6a4cda533b764671e8559e7a)

Comment · Article · Jul 7 · [The Missing MCP Category: Private Matching for AI Agents](https://hashnode.com/posts/the-missing-mcp-category-private-matching-for-ai-agents/6a4a549d24a5ca7c67ed801c)

[Makes sense. Docker build logs are probably the worst test case — layer cache hits/misses create massive repetitive output. Would be curious to hear how it handles that if you integrate it.](https://hashnode.com/posts/stop-drowning-your-ai-assistant-how-to-build-a-context-saving-mcp-server-for-vs-code-copilot/6a2e64caa5db61d19f3c9039/comment/6a301a226182655e5cb35d44#reply-6a4cd8f5f445878d916a4c14)

Reply · Article · Jul 7 · [Stop Drowning Your AI Assistant: How to Build a Context-Saving MCP Server for VS Code Copilot](https://hashnode.com/posts/stop-drowning-your-ai-assistant-how-to-build-a-context-saving-mcp-server-for-vs-code-copilot/6a2e64caa5db61d19f3c9039)

[The session isolation point is where most production issues surface — the typical trap is passing auth context at server init instead of per-request, so the first time two users hit the server concurrently, one session's context bleeds into the other. Worth calling out explicitly in a follow-up article if you cover the multi-tenant path in more depth.](https://hashnode.com/posts/building-a-customer-facing-mcp-server-what-do-you-actually-need/6a47ef4f6a19961ca143144c/comment/6a4af4f2686f49c6dcc4fed9#reply-6a4b821f4baf028a0efbeee6)

Reply · Article · Jul 6 · [Building a Customer-Facing MCP Server: What Do You Actually Need?](https://hashnode.com/posts/building-a-customer-facing-mcp-server-what-do-you-actually-need/6a47ef4f6a19961ca143144c)

[The "capabilities over API mirror" framing is the right mental model, and it takes a few embarrassing false starts before it clicks. The moment it clicked for me was realizing the AI client doesn't know your data model — it only knows what the tool description says. A tool called get\_documents with a vague description never gets called correctly; find\_invoices\_by\_vendor\_and\_date\_range with a two-line description that includes the expected output format hits on the first try, consistently. The stdio→HTTP migration point is also underrated — most tutorials skip it because they don't model concurrent connections or session state. For multi-tenant setups, per-session context isolation is the piece most examples handle poorly or not at all.](https://hashnode.com/posts/building-a-customer-facing-mcp-server-what-do-you-actually-need/6a47ef4f6a19961ca143144c/comment/6a48e4c4047b24be0febcbc5)

Comment · Article · Jul 4 · [Building a Customer-Facing MCP Server: What Do You Actually Need?](https://hashnode.com/posts/building-a-customer-facing-mcp-server-what-do-you-actually-need/6a47ef4f6a19961ca143144c)

[The flip side of "already agentic" is that Logic Apps were deterministic agentic — every branch was pre-defined, every retry had an explicit rule. What LLMs add is the ability to handle the branch you didn't pre-define. That's not a small delta: most of the real value in an LLM agent is in the 5% of cases that fall outside the flowchart. The 95% of cases that Logic Apps already handled fine don't need the upgrade. The question isn't "were we already agentic" — it's "where does non-deterministic decision-making actually add value vs. add risk." Those are very different questions.](https://hashnode.com/posts/your-logic-apps-were-already-agentic-you-just-didn-t-know-it/6a421463401a2ddf2f386e47/comment/6a439758526d36a528ae552d)

Comment · Article · Jun 30 · [Your Logic Apps Were Already Agentic. You Just Didn't Know It.](https://hashnode.com/posts/your-logic-apps-were-already-agentic-you-just-didn-t-know-it/6a421463401a2ddf2f386e47)

[The interesting part isn't the bug — it's the failure signature. HTTP 200 + error-in-body is the worst possible shape for a defect like this because it looks like user error, not a routing mismatch. You'd blame your Cypher query, not the key name being passed between layers. The structural fix that prevents the whole class: typed input at the tool handler boundary. execute\_cypher\_query should accept a validated schema (Pydantic, dataclass, whatever), not raw args.get('cypher\_query'). Then any caller passing the wrong key fails loudly at the call site instead of quietly downstream. Most MCP servers skip this because the happy path gets tested — the wrong-key path doesn't.](https://hashnode.com/posts/how-i-found-a-silent-api-bug-in-a-3-548-star-mcp-server/6a420d4285d664dd0a012f6c/comment/6a426edadb3f93e8e454f341)

Comment · Article · Jun 29 · [How I Found a Silent API Bug in a 3,548-Star MCP Server](https://hashnode.com/posts/how-i-found-a-silent-api-bug-in-a-3-548-star-mcp-server/6a420d4285d664dd0a012f6c)

[This is a solid approach. The head/tail truncation pattern is elegant — keeping the context where errors usually surface while dropping the noisy middle. I've been thinking about a similar problem from a different angle: when you're running long scraping jobs via MCP, the log output can get massive. A token-aware middleware like mcp-headroom could slot right into that pipeline. Curious — have you tested this with Docker build outputs? Those tend to be the worst offenders for context bloat.](https://hashnode.com/posts/stop-drowning-your-ai-assistant-how-to-build-a-context-saving-mcp-server-for-vs-code-copilot/6a2e64caa5db61d19f3c9039/comment/6a301a226182655e5cb35d44)

Comment · Article · Jun 15 · 1 · [Stop Drowning Your AI Assistant: How to Build a Context-Saving MCP Server for VS Code Copilot](https://hashnode.com/posts/stop-drowning-your-ai-assistant-how-to-build-a-context-saving-mcp-server-for-vs-code-copilot/6a2e64caa5db61d19f3c9039)
