Eclipse Aperture MCP
Provides tools for building native Instagram Feed, Carousel, Story, and Reel variants from an approved package, generating preview packs with diffs and hashes for owner approval, probing a static capability matrix, and maintaining a hash-chained receipt ledger. In v0.1.0 it makes no live calls or posts; live publishing and analytics are planned only through Meta's sanctioned Graph API surface.
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., "@Eclipse Aperture MCPBuild a Reel 9:16 variant from the approved package and pack the preview"
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.
Eclipse Aperture MCP
Powered by Cyan Eclipse Technologies — https://cetech.ai
Eclipse Aperture — the Instagram adapter: one approved package becomes native Feed, Carousel, Story, and Reel variants for a professional account, with publishing and analytics only through Meta's sanctioned Graph API surface.
Why this exists
The White Report already operates Instagram professionally through the house's existing sanctioned connector. S0 turns that working route into a capability-probed, hash-bound product surface instead of a collection of habits (spec §9, §18). Aperture is that surface: the capability declaration, the native variants, the preview the owner approves, and the receipts.
Related MCP server: weone-daily-post
Status — honest labels
v0.1.0, phase S0 formalization. This server posts nothing and makes no live calls. The house's Instagram operation continues through its existing connector, outside this product; Aperture references that route and never duplicates it — there is no second token path, no session handling, and no credential material anywhere in this code. Local stdio, Python stdlib only. No certification claimed — bench pending.
Tools (4)
Tool | What it does |
| Returns the capability matrix from a static declaration fixture (dated 2026-10-25, |
| Build one native variant from a canonical package: Feed 4:5, Carousel in narrative order (first card = hook, payoff before end card), Reel 9:16, Story 9:16 — with the working link path (profile link; Story link sticker — caption links are not clickable and are never the conversion path), the platform AI-media label carried on the variant, classified diffs vs canonical, and the variant hash. |
| The exact native preview the owner approves: rendered geometry, caption, link path, safe-zone notes, hashtags, disclosures, order — plus diffs and the hashes an approval binds. |
| The append-only, hash-chained receipt ledger, with chain verification. |
Native rules carried in code (§9)
Feed portrait 4:5 uses the grid better than square; landscape derivatives are shown, never center-cropped blindly.
Reels/Stories 9:16 with platform safe zones respected — text and evidence stay out of the top/bottom UI bands.
Hashtags are searchable metadata, not stuffing; the approved set appears in the diff.
Threads is not a separate product (§8): it rides as a sub-adapter inside this Meta family tooling when its gated modes are proven — no Threads listing or claim exists.
Run it
python3 server.py # MCP over stdio, stdlib only, no dependencies
python3 smoke.py # probe + Reel variant + preview over real stdio
python3 -m unittest discover tests # 11 testsState persists in data/state.json (override with ECLIPSE_APERTURE_STATE). data/ is gitignored. The capability fixture lives at fixtures/capability.json; the smoke drives the social core's sample_content.json package.
Roadmap (per spec §21)
Dated Meta terms/capability record replacing the static declaration → live
ig_capability_probe.ig_media_stage/ig_container_verify/ig_publish_receipt/ig_insights_read/ig_own_comment_queue— only against the sanctioned Graph surface, only for approved hash-bound packs, with publish read-back before any completion claim. Execution wiring stays on the house's existing route.
License / attribution
A Cyan Eclipse Technologies product. The "Powered by Cyan Eclipse Technologies" attribution travels with it.
Available Tools
4 toolscapability_probeA
Return Aperture's capability matrix from the STATIC declaration fixture (dated, [verify]-flagged): per-capability modes for an eligible professional Instagram account per spec SS9. NO live Graph API call is made in v0.1. Pass simulate_probe_failure=true to exercise the family downgrade rule: write modes collapse to prep, own-engagement to COMMUNITY_PREP.
| Name | Required | Description | Default |
|---|---|---|---|
| simulate_probe_failure | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does substantial work: it discloses that data comes from a static dated fixture that is '[verify]-flagged' (i.e., potentially stale), that no live Graph API call occurs, and precisely what the failure-simulation flag does to modes. It stops short of covering auth/permission needs or error behavior, but this is well above the bar for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three densely packed sentences, front-loaded with what is returned and the crucial 'no live API call' caveat before the optional flag's behavior. No filler, though the parenthetical jargon ('dated, [verify]-flagged', 'spec SS9') costs some readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey the return shape, and it does — per-capability modes for an eligible professional account per spec SS9 — plus the behavioral effects of the flag. It lacks detail on the exact structure of the matrix or what happens on failure beyond the simulated mode collapse, but nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter has no schema-level description, so the description must compensate — and it does, explaining that simulate_probe_failure=true triggers the family downgrade rule with concrete outcomes (write modes collapse to prep, own-engagement to COMMUNITY_PREP). The implicit default (false = static declaration read) is inferable but never stated outright.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Return Aperture's capability matrix') and scopes it to per-capability modes for an eligible professional Instagram account per spec SS9. It is clear what is produced, though the heavy jargon ('[verify]-flagged', 'Aperture') and the absence of any differentiation from siblings like variant_build or preview_pack keep it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a useful usage constraint upfront — 'NO live Graph API call is made in v0.1' — and explains the condition for the one optional flag ('Pass simulate_probe_failure=true to exercise the family downgrade rule'). However, it never says when to reach for this tool versus the sibling tools or which situations it is not appropriate for, leaving usage largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_packB
The exact native preview for a built variant — rendered geometry/caption/link path/safe zones — plus its diffs and the hashes an approval would bind.
| Name | Required | Description | Default |
|---|---|---|---|
| variant_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses what the preview returns (rendered elements, diffs, hashes), but it does not state whether the operation is read-only, what permissions are required, or what happens if the variant is not yet built.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence with the core purpose front-loaded before the list of returned elements. It is efficient, though the em-dash-separated jargon requires some parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description gives a reasonable account of return contents. However, it leaves gaps around parameter meaning and when to invoke it, which are important given the absence of annotations and schema descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the single parameter. It only implies that variant_id refers to a 'built variant' and adds no format, source, or validation details beyond the schema's required string type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as a preview for a built variant and enumerates what it contains: geometry, caption, link path, safe zones, diffs, and approval hashes. It does not explicitly differentiate from sibling tools like variant_build or receipt_list, keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as variant_build or receipt_list. The phrase 'for a built variant' implies a prerequisite but does not state usage conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
receipt_listB
The append-only, hash-chained receipt ledger, with chain verification.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It usefully discloses append-only storage, hash-chaining, and chain verification, but it does not clarify whether the tool lists entries, verifies integrity, returns a chain status, or has any authorization/rate-limit constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, waste-free sentence that front-loads the ledger's defining properties. It is concise, though its terseness contributes to the missing operational detail rather than compensating for it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no annotations and no output schema, the description is minimally adequate but incomplete. It explains the data domain but not the operation or return behavior, leaving the agent to infer what receipt_list actually does.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to explain. The empty schema is fully self-consistent, and the description does not need to compensate for missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource as an append-only, hash-chained receipt ledger, but it does not state the tool's action (e.g., list or verify receipts). It is more specific than a tautology, yet it leaves the operation implicit and relies on the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit guidance on when to use this tool versus alternatives. Sibling tools are unrelated, but the agent is still not told the intended context or exclusions for invoking receipt_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
variant_buildA
Build one native Instagram variant (feed 4:5 | carousel narrative order | reel 9:16 | story 9:16) from a canonical content package: geometry, caption, the working link path (profile link / Story sticker — caption links are not clickable), platform AI-media label, classified diff vs canonical, and the variant's hash. Formalization only — nothing is posted.
| Name | Required | Description | Default |
|---|---|---|---|
| package | Yes | ||
| surface | No | ||
| account_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: it discloses that nothing is posted, that caption links are not clickable and the working path is profile link / Story sticker, and that output includes a classified diff vs canonical plus a hash. It does not say whether the variant is persisted under account_id, whether the call is idempotent, or what happens on an unsupported surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then the surface taxonomy, then the output inventory — a sensible order. It is a single very dense sentence, and clauses like 'the variant's hash' are slightly surplus given no output schema consumers, but nothing is genuinely wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No annotations and no output schema, so the description's output inventory is valuable and covers return values well. The critical gap is the required nested 'package' object, whose expected contents are left entirely undefined despite being the only required parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and it partly does: the surface list (feed 4:5, carousel narrative order, reel 9:16, story 9:16) effectively documents the allowed values of 'surface'. But 'account_id' is never mentioned and the required nested 'package' object's structure is only gestured at with 'canonical content package'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Build one native Instagram variant') and enumerates the four supported surfaces inline, so an agent can tell what artifact is produced. It does not name or distinguish itself from the sibling preview_pack, which is the most likely source of confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Formalization only — nothing is posted' usefully bounds the operation, and the implied prerequisite 'from a canonical content package' hints at required input. However, there is no explicit when-to-use guidance, no mention of whether preview_pack should be run first, and no stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
capability_probe - First observed
preview_pack - First observed
receipt_list - First observed
variant_build
TDQS
Scored across 4 tools
Each tool targets a distinct stage: capability probing, variant construction, previewing, and receipt listing. There is minor overlap because variant_build and preview_pack both surface diffs and hashes, which could make an agent pause over which output is authoritative.
Names are consistently snake_case and mostly follow an object_action pattern: capability_probe, variant_build, receipt_list. preview_pack is slightly less natural but still readable and within the same convention.
Four tools is well-scoped for this narrow v0.1 formalization workflow. Each tool represents a distinct step and none appears redundant.
The surface covers probing, building, previewing, and listing receipts, but there is no exposed tool for managing canonical content packages or recording an approval/receipt action. The mention that previews expose hashes an approval would bind highlights a notable lifecycle gap.
Maintenance
Related MCP Connectors
16 Instagram endpoints. Pay per call in USDC via x402.
Create, review, publish and schedule Instagram images, carousels and Reels with AI assistants.
Agent-first social media publishing, scheduling, analytics, and unified inbox API + 16-tool MCP server across 18 social platforms (X, LinkedIn, Instagram, YouTube, TikTok, Threads, Bluesky, Reddit, Telegram, Discord, Mastodon, Facebook, Pinterest).
Publish to Instagram from chat — official Graph API, OAuth 2.1, free for your own posts.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables publishing and managing organic Facebook Page and Instagram content directly through Meta's Graph API without paid third-party services.-
- FlicenseNot gradedqualityCmaintenanceEnables automated creation and publishing of branded Instagram and Facebook posts, with topic management, typeset image rendering, and social media publishing via the Meta Graph API.-
- AlicenseAqualityCmaintenanceEnables publishing photos, reels, and stories to Instagram, reading and moderating comments, fetching performance insights, drafting captions via MCP sampling, and scheduling reels for later.138 npmMIT
- AlicenseBqualityBmaintenanceEnables reading, publishing, commenting on, and analyzing Instagram Business/Creator accounts through the official Graph API, with multi-account support and an optional self-hosted publishing panel.29MIT