Oct 7, 2026 · by Rishav katoch · View source

SineFrame M3

Test MCP servers and the agents that call them in pytest

SineFrame M3

Editorial analysis

The real reason your AI content stack keeps breaking (and what a tiny MCP testing tool tells us about it)

If you run social accounts in 2026, you’re almost certainly wiring AI agents into your workflow — a Claude skill that drafts carousels, a Codex-powered repurposing bot, some ACP agent that pulls your analytics. And if you’re like me, you’ve noticed the same thing: the agent demos beautifully, then quietly does something insane in production. It posts the wrong variant to the wrong platform. It “remembers” a brand guideline you never gave it. It calls a tool with arguments that look right and aren’t. Your unit tests are green. Your content is wrong. That gap — between “the code passes” and “the agent behaves” — is exactly what SineFrame M3, launched by Rishav Katoch and Utkarsh Pandey, is trying to close. It’s a developer tool, not a social media tool. But the problem it names is the same one eating your content operations alive, and the way it solves it is worth stealing.

What M3 actually is, in plain operator language

M3 is a testing framework for MCP servers — the Model Context Protocol layer that lets AI agents talk to your tools, your databases, your schedulers, your analytics. The makers describe it as “pytest for that gap”: the space between your server’s unit tests passing and a real agent actually using your server correctly. Two test modes matter here:

  • Direct tests. You call your MCP server over stdio or Streamable HTTP and assert on the structured results. No model, no API key, no LLM in the loop. This is the cheap, deterministic layer.
  • Agent tests. You run a real agent — Claude Code, Codex, OpenCode, Pi, or any ACP-compatible agent — against your server, then assert on the tool calls recorded on the wire. Not on what the agent says it did. On what it actually did.

There’s also m3 ui, which saves every run locally with traces, tool calls, arguments, and a timeline, and m3 ci test --upload, which gates pull requests and pushes runs to app.m3.sineframe.com for team visibility. It’s free and open source under Apache-2.0 — uv tool install sf-m3-cli — with a free hosted account at sineframe.com.

Now, if you’re a social media manager, your honest reaction is probably: “I don’t have an MCP server.” Give it six months. I’d bet most mid-size content teams will, because the alternative — manually babysitting agents that touch your scheduling, your asset library, and your publishing APIs — doesn’t scale past about three platforms.

Why this matters more to a TikTok operator than a LinkedIn one

Here’s the asymmetry nobody talks about. A LinkedIn post that renders slightly wrong is embarrassing. A TikTok that publishes with the wrong sound, wrong aspect ratio, or wrong caption at the wrong hour is algorithmically dead on arrival — the first-hour engagement window closes and the distribution never recovers. The higher the platform’s velocity, the less tolerance you have for agent error. That’s why I think the teams who’ll feel this problem first are the ones running high-frequency, high-volume short-form: TikTok, Reels, Shorts, Threads. Slow-cadence LinkedIn and newsletter operations can absorb a bad agent call. A daily-posting TikTok shop cannot.

How this differs from the tools you already pay for

The makers draw a sharp line, and I think it’s the right one: “an inspector is for poking at a server by hand, and eval platforms grade your own LLM app. M3 is test code in your repo that checks your server and the real agents that call it.”

Translate that into the social stack you actually run. Buffer, Hootsuite, Later, and Metricool are execution layers — they schedule and publish. Canva and CapCut are production layers. What none of them are is a verification layer for the AI agents increasingly sitting between production and execution. That’s the gap. When your repurposing agent decides which clip becomes a Reel, when your caption agent picks a hook, when your scheduling agent picks a slot — nobody is asserting on those decisions before they hit the API.

I’ve watched teams try to solve this with eval platforms that grade the model’s output text. That’s the wrong target. The failure mode isn’t usually a bad sentence. It’s a correct-sounding sentence attached to a wrong tool call — the agent called schedule_post with platform: "instagram" when the asset was a 16:9 horizontal video, or it pulled from last quarter’s content calendar because the retrieval tool returned stale rows. Grading prose won’t catch that. Asserting on the wire will.

The elicitation question is the one to watch

Buried in the comments is the most operationally interesting thread. A user, Manya Sharma, asked how agent tests handle elicitation — when an MCP server pauses mid-tool-call to ask the user for input. Can you stub the client’s response in the test? Utkarsh’s answer: yes, supported with Codex and Pi, with elicitation for Claude Code “coming soon,” pointing to the M3 docs.

Why should a content operator care? Because elicitation is exactly where human-in-the-loop approval lives. “Approve this draft before publishing?” “Pick a thumbnail?” “Confirm the budget on this boosted post?” If your agent workflow has any approval gate — and for brand safety it should — that gate is an elicitation, and it needs to be testable without a human sitting there clicking. The fact that this is partially supported rather than fully supported is a real limitation, and I’ll come back to it.

What creators and social teams can borrow from M3’s philosophy

You don’t need to install sf-m3-cli to benefit from how these two think. Four transferable ideas:

1. Assert on behavior, not on output. The single best habit in M3 is that agent tests check the tool calls recorded on the wire, not the agent’s self-report. Apply that to your own AI content pipeline. When your agent claims it “scheduled 5 posts,” don’t trust the summary — check the actual API responses, the actual draft IDs, the actual timestamps. I’ve started keeping a simple log of every write-action my agents take against Meta Business Suite and YouTube Studio, and reviewing it weekly. The number of “the agent said it did X, the platform says it did Y” discrepancies in the first month was genuinely unnerving.

2. Separate the deterministic layer from the probabilistic one. Direct tests (no model, no API key) versus agent tests (real model, real agent). This is a clean mental model for your whole stack. Your UTM tagging, your file naming, your aspect-ratio checks, your character counts — those should be deterministic and testable without any AI involved. Only the genuinely judgment-dependent steps (hook selection, tone, clip choice) belong in the probabilistic layer. Most teams I audit have it backwards: they let the model handle the mechanical stuff and hand-verify the creative stuff. Invert that.

3. Make runs visible to the whole team. m3 ui saving traces locally, and m3 ci test --upload landing runs on a shared dashboard, is the unglamorous infrastructure that separates a hobby workflow from an operational one. Your equivalent: a shared run log your whole content team can see, not a Slack thread where the one person who understands the agent says “it worked on my machine.”

4. Gate changes in CI, not in vibes. The m3 ci test --upload flow means a pull request can’t merge if the agent misbehaves. Translate: your content calendar changes should pass a checklist before publishing, not after. This is unsexy and it is the entire ballgame at scale.

Where the math breaks

I want to be honest about the economics, because this is where a lot of AI content tooling quietly falls apart. Agent tests are slow and non-deterministic — you’re spinning up real models against real servers. If you run them on every commit across a large MCP surface, your CI bill and your wait times balloon. The sane pattern is the one M3 implies: fast direct tests on every change, a smaller agent-test suite on a schedule or before release. If you’re a solo creator, this is overkill. If you’re running a five-person content team pushing 200+ posts a month across seven platforms, the cost of one bad agent call — a mis-scheduled campaign, a wrong-platform asset — probably exceeds the CI spend. Do that math for your own operation before you buy into any of this.

Where my judgment says M3 falls short

Balanced view, because the launch page is a launch page:

  • Elicitation support is partial. Codex and Pi yes; Claude Code “coming soon.” If your approval-gated workflows run on Claude Code — and plenty do — you’re waiting. That’s a real dependency risk, not a footnote.
  • It’s a developer tool, and it says so. There is no social-media UI here. If your team doesn’t have someone comfortable with pytest-style code in a repo, M3 is not for you. Don’t let anyone tell you otherwise. The correct move for a non-technical content team is to hire or contract the verification layer, not to pretend a CLI is a product.
  • “Free and open source” plus “free account for hosted runs” raises the obvious question. What’s the paid tier? Pricing beyond the free hosted account is not disclosed. I’d want to know the limits on hosted runs before standardizing a team on it.
  • Adoption and longevity are unproven. This is a fresh Product Hunt launch. The MCP ecosystem is moving fast, and a testing layer lives or dies by how quickly it tracks protocol changes and new agent clients. No user counts, funding, or roadmap are disclosed. I’d bet on the pattern before I bet on the vendor.
  • The claim to scrutinize. The team frames M3 as the thing that catches what your test suite misses. In my experience that’s directionally true, but agent tests are probabilistic — they can pass on a run where the agent got lucky and fail on a run where it didn’t. Treat green agent tests as evidence, not proof.

Who it’s not for: solo creators with one platform and a Canva-plus-Buffer workflow. You have no MCP server, no agent fleet, and no CI. Your verification layer is your own eyeballs, and that’s fine. Come back when you’re orchestrating three or more agents against publishing APIs.

What I’d watch / test next

Concrete moves for this week, whether or not you touch M3:

  1. Audit one agent. Pick the AI step in your pipeline that touches publishing or scheduling. For seven days, log what the agent claims it did versus what the platform actually shows. I’d bet you find at least one recurring discrepancy.
  2. Split your checks. Write down every quality check you currently do by hand. Mark each as deterministic (aspect ratio, character count, UTM format, hashtag count) or judgment-based (hook, tone, clip choice). Move the deterministic ones into an automated pre-publish gate this month.
  3. If you have engineers, have them read the M3 docs and try uv tool install sf-m3-cli against one internal MCP server. The direct-test mode alone is worth the afternoon.
  4. Watch the elicitation roadmap. If approval gates are core to your brand-safety process, Claude Code elicitation support is the specific thing to track.
  5. Ask the pricing question now. Before you build a dependency on hosted runs, get clarity on what happens after the free tier. “Not disclosed” today becomes “surprise invoice” tomorrow.

The bigger takeaway isn’t M3 specifically. It’s that the creator economy’s AI layer has quietly become infrastructure — and infrastructure needs tests. The teams that treat their agent workflows like software, with verification and gates and visible runs, will out-ship the teams that treat them like magic. That’s the whole lesson.

Ready to Create Your Own?

Join thousands of brands creating high-performing video ads with FLOWNIB. No editing skills required.

Start Creating for Free