Skip to main content
Glama

ApproveKit

Server Details

Audit apps against App Store, Google Play and Google OAuth review rules; get the required docs.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
yateshaw/approvekit
GitHub Stars
0
Server Listing
ApproveKit

TDQS

A4.4/5.0

Scored across 4 tools

Disambiguation4/5

Each tool has a clearly distinct role: audit_app (pre-submission audit), create_checkout (payment link), get_order (payment status + document retrieval), and publish_document (finalize/host documents). The create_checkout/get_order pair is workflow-coupled but the verbs clearly separate creation from retrieval, leaving little real ambiguity.

Naming Consistency5/5

All four tools follow a consistent verb_noun pattern (audit_app, create_checkout, get_order, publish_document) with uniform snake_case and no mixing of conventions.

Tool Count5/5

Four tools is well-scoped for a focused compliance-and-documentation service, with each tool mapping to a distinct step in the workflow rather than padding the surface.

Completeness4/5

The surface covers the core lifecycle: audit the app, pay, retrieve generated documents, and publish finalized versions. Minor gaps exist (no way to list or manage multiple previously created apps without the stored token), but core workflows are covered.

Available Tools

4 tools
audit_appAudit an app for store and Google OAuth reviewAInspect

Use before submitting a mobile or web app to the Apple App Store, Google Play or Google OAuth verification. Pass an inventory of what the app collects, which SDKs it uses and which Google scopes it requests (build it by reading the repo). Returns the problems reviewers are likely to reject, how to fix each one, and which paid package generates the missing documents. Free. The first call returns an app_token: save it in .approvekit.json at the project root and pass it on later calls so the app is updated instead of duplicated.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_tokenNoThe app_token returned by audit_app. It is stored in .approvekit.json at the project root. Omit on the first audit of an app.
inventoryYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare safety flags (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the description adds real value: it discloses that the first call mints an app_token, that omitting the token duplicates the app, that the audit is free, and that paid packages are cross-sold. The duplication behavior is consistent with idempotentHint=false. It doesn't state auth/permission requirements for the tool itself.

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-loads the when-to-use trigger, then output value, then the token mechanics. Four sentences, each doing distinct work; slightly dense but no filler.

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?

No output schema, so the description's summary of returns (likely-rejected problems, fixes, which paid package produces missing documents) is necessary and present, as is the token persistence workflow. It omits any mention of rate limits, auth, or error behavior, which are secondary here.

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?

Only 2 params at 50% schema coverage, so the description must carry weight. It explains app_token lifecycle (first call returns it, save to .approvekit.json, pass on later calls) beyond the schema's own note, and summarizes what the inventory object should contain. It doesn't enumerate the required inventory fields, leaving that to the schema.

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?

States a specific verb+resource (audit an app for App Store / Play / Google OAuth review) and the exact trigger for running it. Siblings (create_checkout, get_order, publish_document) are unrelated domains, so no differentiation is needed.

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

Usage Guidelines4/5

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

Explicit about when to use it ('before submitting... to the Apple App Store, Google Play or Google OAuth verification') and how to prepare the inventory by reading the repo. No when-not guidance or named alternatives, which is a minor gap given no sibling overlaps.

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

create_checkoutCreate a payment link for a ApproveKit packageAInspect

Creates a Stripe Checkout link for one app. Only call this after the user agreed to the purchase. Show the link to the user so they can pay; then call get_order with the returned order_id to receive the documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
productYeslaunch_pass (US$49) or oauth_pack (US$249).
app_tokenYesThe app_token returned by audit_app. It is stored in .approvekit.json at the project root.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations supply the safety profile (readOnlyHint=false, idempotentHint=false, openWorldHint=true, destructiveHint=false), so the description only needs to add context. It does: it discloses a human-in-the-loop prerequisite (user consent) and the fact that the return payload contains an order_id used by a follow-up tool. It does not mention that repeat calls would create additional links, which is the one notable gap given idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action, then the precondition, then the follow-up. Every sentence carries distinct operational information with no restatement of the title or name.

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 compensates by naming the returned order_id and the tool that consumes it. The consent prerequisite and payment-display step round out the call contract, though link format/expiry and re-call behavior are left unstated.

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 description coverage is 100% and the enum values with prices are fully documented in the schema itself. The description adds only the implicit notion that app_token is per-app ('for one app') and no format or sourcing detail beyond what audit_app/.approvekit.json already states. Baseline 3 is appropriate when the schema carries the parameter burden.

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?

States a specific verb and resource ('Creates a Stripe Checkout link for one app') and is immediately distinguishable from audit_app, get_order, and publish_document. The scope ('for one app') also signals it operates on a single app_token rather than bulk.

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 an explicit precondition ('Only call this after the user agreed to the purchase') and a concrete downstream workflow ('Show the link to the user so they can pay; then call get_order with the returned order_id'). It names the sibling to call next and the data to pass, which is exactly the routing guidance an agent needs.

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

get_orderGet an order's status and its documentsA
Read-onlyIdempotent
Inspect

Returns the payment status of an order. Once paid, returns every generated document as Markdown plus the public URLs of the hosted privacy policy and account deletion pages, ready to paste into App Store Connect, Play Console or the Google OAuth consent screen.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYesThe order_id returned by create_checkout.
app_tokenYesThe app_token returned by audit_app. It is stored in .approvekit.json at the project root.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety is covered. The description adds meaningful behavioral context beyond that: the response is conditional on payment state ('Once paid, returns every generated document'), which tells the agent the document payload can be absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with no filler; the primary return (payment status) is front-loaded and the conditional document payload follows. Every clause earns its place.

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?

There is no output schema, so the description carries the burden of describing returns, which it does concretely (status, Markdown documents, hosted policy/deletion URLs). Combined with full schema coverage for inputs and annotations for the safety profile, an agent has everything needed to call and interpret it.

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?

With 2 parameters at 100% schema description coverage, the schema already explains both order_id and app_token, including their provenance. The description adds no parameter-level detail, so the baseline of 3 applies.

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?

States a specific verb and resource ('Returns the payment status of an order') and expands on the secondary payload (generated documents plus hosted URLs). The 'order' resource is unique among the siblings audit_app, create_checkout, and publish_document, so an agent can route to it without ambiguity.

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?

The description implies when the tool is useful by naming the consumption targets ('ready to paste into App Store Connect, Play Console or the Google OAuth consent screen'), which gives genuine downstream context. However, it never states when to call this versus create_checkout or publish_document, nor any prerequisite like needing an order_id from a prior checkout.

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

publish_documentPublish the final text of a generated documentA
Idempotent
Inspect

Saves the final version of a document after every [CONFIRM: ...] placeholder has been resolved with the user. For privacy-policy and account-deletion this makes the hosted page live at its public URL; for the other kinds it just stores the final text. Call it again whenever the text needs an update (for example after the app adds a new data type).

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
markdownYesThe complete final document in Markdown (headings, lists, bold and links only).
app_tokenYesThe app_token returned by audit_app. It is stored in .approvekit.json at the project root.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover idempotency and non-destructiveness; the description adds the material side effect that privacy-policy and account-deletion kinds make a hosted page live at a public URL, while other kinds merely store text. That public-exposure consequence is exactly the kind of behavior an agent cannot infer from the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences: the core action and precondition first, then the kind-dependent effect, then the update trigger. No filler or restatement of the name.

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?

For a 3-parameter mutation tool with no output schema, it covers precondition, side effects, and repeat-call semantics. It omits error/failure behavior and whether an already-published document can be retracted, which keeps it short of full completeness.

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 67% (app_token and markdown are documented, kind is an undescribed enum). The description compensates by explaining what the kind values actually do behaviorally and by implying markdown must be the finalized text with placeholders resolved.

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?

States a specific verb+resource ('Saves the final version of a document') and then refines it by kind, so an agent knows exactly what changes state. Siblings (audit_app, create_checkout, get_order) are unrelated, so no differentiation is required.

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

Usage Guidelines4/5

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

Gives a clear precondition (every [CONFIRM: ...] placeholder resolved with the user) and an explicit re-invocation rule ('Call it again whenever the text needs an update'). It does not name an alternative tool, but no sibling overlaps this function, so the omission is low-cost.

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 updates
    • First observedaudit_app
    • First observedcreate_checkout
    • First observedget_order
    • First observedpublish_document

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.