Skip to main content
Glama
gemmeinhq

Gemmein MCP Server

Official

check_integration

Idempotent

Run live pass/fail checks on your app's Gemmein access boundaries after wiring and before go-live: validate anonymous access, public collection visibility, and user isolation.

Instructions

Call after wiring the app to Gemmein and before telling your human it is done — and again before go-live. Runs the reaffirm boundary checks live against the caller's own app; returns structured pass/fail (structuredContent: checks, notes, failedCount, passed). Tier A (public pk_ key only): the collection name is valid, anonymous reads and writes of a private collection are refused, an optional public collection reads as its rule intends — safe against any environment, live included. Tier B (add the sk_dev secret key): proves one user cannot read another's private records, using two throwaway test sessions in the DEV environment. sk_live is refused by design — never pass a live secret to any tool; dev and live enforce the same rules, so isolation proven in dev holds in live. The only writes anywhere are Tier B's own probe records in the caller's dev environment, deleted at the end of the check. A failed check means the app's assumptions drifted from its rules — fix before shipping.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
apiUrlNooptional: API base URL override (local/dev API); omit for production Gemmein
publicKeyYesthe app's public pk_ key
secretKeyNooptional: the sk_dev secret key — enables Tier B isolation proof (sk_live is refused)
testUsersNooptional: the two Tier-B test emails (default reaffirm-a/b@test.dev)
timeoutMsNooverall time budget, default 30000
publicCollectionNooptional: a community/public_read collection to confirm anonymous readability
privateCollectionYesa collection with the `private` rule

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly=false, destructive=false, idempotent=true, openWorld=true; the description adds far more: the two-tier model (pk_ vs sk_dev), that sk_live is refused by design, that the only writes are Tier B probe records in dev which are deleted at the end, and that dev/live enforce identical rules. It never states an explicit required permission scope or the exact runtime/rate profile beyond the timeout param, but the disclosure is well above the annotation baseline.

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 actionable timing guidance, and each sentence carries real content (tiers, safety guarantees, failure meaning). It is dense and slightly repetitive in reasserting the sk_live prohibition, but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with no output schema, the description covers what matters: which keys trigger which tier, what writes occur and that they are cleaned up, the dev/live equivalence argument, and the return shape. An agent has enough to call it correctly and interpret results.

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 100%, so the baseline is 3; the description goes further by tying parameters to behavior — public pk_ enables Tier A, adding sk_dev enables Tier B, publicCollection confirms anonymous readability, and testUsers are the two Tier-B sessions. It does not add syntax/format detail beyond the schema, but the tier mapping is genuinely useful semantic context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific action (runs reaffirm boundary checks live against the caller's own app) and a concrete return shape (structured pass/fail with checks, notes, failedCount, passed). It is clearly distinguishable from the doc-oriented siblings (guide, reference, explain_rule, validate_collection_name) since it executes live checks rather than explaining concepts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit timing windows: after wiring the app and before declaring it done, and again before go-live. It also states the remediation condition ('a failed check means the app's assumptions drifted — fix before shipping'), so the agent knows exactly when to invoke and what to do with the result.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.