Skip to main content
Glama

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

capability_probe

Returns the capability matrix from a static declaration fixture (dated 2026-10-25, [verify]-flagged): PUBLISH_API for publishing/drafts, READ_API for reads, OWN_ENGAGEMENT_API for own-media comments, COMMUNITY_PREP for community engagement — the §9 posture for eligible professional accounts, grade A subject to Meta app permissions, review, account role, and current Graph API version. simulate_probe_failure=true exercises the family downgrade rule: write modes collapse to prep — automatically, and never to a workaround.

variant_build

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.

preview_pack

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.

receipt_list

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 tests

State 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 tools
capability_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.

NameRequiredDescriptionDefault
simulate_probe_failureNo

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
variant_idYes

TDQS

B3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
packageYes
surfaceNo
account_idNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 4 tool updatesv0.1.0
    • First observedcapability_probe
    • First observedpreview_pack
    • First observedreceipt_list
    • First observedvariant_build

TDQS

B3.4/5.0

Scored across 4 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

Four tools is well-scoped for this narrow v0.1 formalization workflow. Each tool represents a distinct step and none appears redundant.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables 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.
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables publishing photos, reels, and stories to Instagram, reading and moderating comments, fetching performance insights, drafting captions via MCP sampling, and scheduling reels for later.
    13
    8 npm
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables 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.
    29
    MIT