# GraphOS MCP Server (io.github.apollographql/graphos-mcp-server): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/io.github.apollographql%2Fgraphos-mcp-server/versions/latest)
- Connected to: https://mcp.apollographql.com
- Homepage: https://www.apollographql.com/docs/graphos/platform/graphos-mcp-tools
- Scoring rules: v2
- Tools: 48
- Average: 55.8 / 100 (Cloudy)
- Near-identical pairs: 3

This page shows how GraphOS MCP Server (io.github.apollographql/graphos-mcp-server)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Major: 48 tools. Above 40, models choose less accurately.
- Minor: The server's instructions are 2168 characters. Claude Code reads only the first 2,048 by default (Codex 0.154.0 reads them whole). Put what the server is for first.

## Tools

- `GetProposals`: 41 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId, status, sourceVariants, subgraphs, limit, offset.
  - Minor: String arguments with no constraint or example: graphId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetReadme`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId, variant.
  - Minor: String arguments with no constraint or example: graphId, variant.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetSchemaChecks`: 46 / 100
  - Major: Arguments without a description: graphId, limit, offset, status, subgraphs, branches, variants, authors, ids.
  - Minor: String arguments with no constraint or example: graphId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `ApolloDocsRead`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
- `GetLaunch`: 48 / 100
  - Major: Arguments without a description: graphId, variant, launchId.
  - Minor: String arguments with no constraint or example: graphId, variant, launchId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId, launchId. Name the tool or the place that returns it, or models look it up first.
- `GetProposal`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: proposalId.
  - Minor: String arguments with no constraint or example: proposalId.
  - Minor: Required identifiers whose description does not say where the value comes from: proposalId. Name the tool or the place that returns it, or models look it up first.
- `GetVariantDetails`: 48 / 100
  - Major: Arguments without a description: graphId, variant.
  - Minor: String arguments with no constraint or example: graphId, variant.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `PublishReadme`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId, variant.
  - Minor: String arguments with no constraint or example: graphId, variant.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `AddProposalComment`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId, proposalVariant, revisionId, message, parentCommentId, schemaCoordinate, schemaScope.
  - Minor: String arguments with no constraint or example: graphId, proposalVariant, revisionId, message.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId, revisionId. Name the tool or the place that returns it, or models look it up first.
- `CreateProposal`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId, displayName, sourceVariant, description.
  - Minor: String arguments with no constraint or example: graphId, displayName, sourceVariant.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `DeleteGraph`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId.
  - Minor: String arguments with no constraint or example: graphId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetContractConfig`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId, variant.
  - Minor: String arguments with no constraint or example: graphId, variant.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetLatestLaunch`: 50 / 100
  - Major: Arguments without a description: graphId, variant.
  - Minor: String arguments with no constraint or example: graphId, variant.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetPersistedQueryListStatus`: 50 / 100
  - Major: Arguments without a description: graphId, variant.
  - Minor: String arguments with no constraint or example: graphId, variant.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `ReviewProposal`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId, proposalVariant, revisionId, decision, comment.
  - Minor: String arguments with no constraint or example: graphId, proposalVariant, revisionId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId, revisionId. Name the tool or the place that returns it, or models look it up first.
- `RunSubgraphCheck`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId, variant, subgraphName, proposedSchema, branch, commit.
  - Minor: String arguments with no constraint or example: graphId, variant, subgraphName.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `TagGraphArtifact`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId, tag, digest.
  - Minor: String arguments with no constraint or example: graphId, tag, digest.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `UntagGraphArtifact`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId, tag.
  - Minor: String arguments with no constraint or example: graphId, tag.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `ValidateOperations`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId, operations, variant.
  - Minor: String arguments with no constraint or example: graphId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetLaunchHistory`: 51 / 100
  - Major: Arguments without a description: graphId, variant, limit, offset.
  - Minor: String arguments with no constraint or example: graphId, variant.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetLintResults`: 51 / 100
  - Major: Arguments without a description: graphId, limit.
  - Minor: String arguments with no constraint or example: graphId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetSubgraphSchema`: 51 / 100
  - Major: Arguments without a description: graphId, variant, subgraphName.
  - Minor: String arguments with no constraint or example: graphId, variant, subgraphName.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `DeleteApiKey`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: organizationId, keyId.
  - Minor: String arguments with no constraint or example: organizationId, keyId.
  - Minor: Required identifiers whose description does not say where the value comes from: organizationId, keyId. Name the tool or the place that returns it, or models look it up first.
- `ApolloDocsSearch`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
- `DeleteSubgraph`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: graphId, variant, subgraphName.
  - Minor: String arguments with no constraint or example: graphId, variant, subgraphName.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetSupergraphSchema`: 55 / 100
  - Major: Arguments without a description: graphId, variant.
  - Minor: String arguments with no constraint or example: graphId, variant.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `PublishGraphSchema`: 55 / 100
  - Major: Arguments without a description: graphId, variant, schemaDocument, branch, commit.
  - Minor: String arguments with no constraint or example: graphId, variant, schemaDocument.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `PublishSubgraph`: 55 / 100
  - Major: Arguments without a description: graphId, variant, subgraphName, sdl, url, revision, branch, commit.
  - Minor: String arguments with no constraint or example: graphId, variant, subgraphName, sdl.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `RenameApiKey`: 55 / 100
  - Major: Arguments without a description: organizationId, keyId, name.
  - Minor: String arguments with no constraint or example: organizationId, keyId, name.
  - Minor: Required identifiers whose description does not say where the value comes from: organizationId, keyId. Name the tool or the place that returns it, or models look it up first.
- `RunSchemaCheck`: 55 / 100
  - Major: Arguments without a description: graphId, variant, proposedSchema, branch, commit.
  - Minor: String arguments with no constraint or example: graphId, variant, proposedSchema.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `LintSchema`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: graphId.
  - Minor: String arguments with no constraint or example: graphId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `UpdateProposalStatus`: 57 / 100
  - Major: Arguments without a description: graphId, proposalVariant, status.
  - Minor: String arguments with no constraint or example: graphId, proposalVariant.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `CreateApiKey`: 58 / 100
  - Major: Arguments without a description: organizationId, name, type, resources.
  - Minor: String arguments with no constraint or example: organizationId, name.
  - Minor: Required identifiers whose description does not say where the value comes from: organizationId. Name the tool or the place that returns it, or models look it up first.
- `GetOfflineLicense`: 60 / 100
  - Major: Arguments without a description: graphId.
  - Minor: String arguments with no constraint or example: graphId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `PublishPersistedQueries`: 60 / 100
  - Major: Arguments without a description: graphId, listId, operations, remove, allowOverwrittenOperations.
  - Minor: String arguments with no constraint or example: graphId, listId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId, listId. Name the tool or the place that returns it, or models look it up first.
- `PublishProposalRevision`: 60 / 100
  - Major: Arguments without a description: graphId, proposalVariant, previousLaunchId, revision, summary, subgraphs, gitContext.
  - Minor: String arguments with no constraint or example: graphId, proposalVariant, previousLaunchId, revision, summary.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId, previousLaunchId. Name the tool or the place that returns it, or models look it up first.
- `ApolloConnectorsSpec`: 61 / 100
  - Major: Says nothing about when to use it, or when not to.
- `GetCheckResults`: 61 / 100
  - Minor: Arguments without a description: graphId, checkId.
  - Minor: String arguments with no constraint or example: graphId, checkId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId, checkId. Name the tool or the place that returns it, or models look it up first.
- `GetSubgraphMetrics`: 63 / 100
  - Major: Arguments without a description: graphId, orderBy, variantName, subgraphName, clients.
  - Minor: String arguments with no constraint or example: graphId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetOperationMetrics`: 64 / 100
  - Minor: Arguments without a description: graphId, orderBy, variantName, clients.
  - Minor: String arguments with no constraint or example: graphId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetGraphArtifact`: 65 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetTopOperations`: 67 / 100
  - Minor: Arguments without a description: graphId, variant.
  - Minor: String arguments with no constraint or example: graphId, variant.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetGraphSchema`: 70 / 100
  - Major: Arguments without a description: graphId, variant.
  - Minor: String arguments with no constraint or example: graphId, variant.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetClientMetrics`: 71 / 100
  - Minor: Arguments without a description: graphId, orderBy, variantName, operationName.
  - Minor: String arguments with no constraint or example: graphId.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `PublishContract`: 71 / 100
  - Major: Arguments without a description: graphId, include, exclude, hideUnreachableTypes.
  - Minor: String arguments with no constraint or example: graphId.
  - Minor: The meaning of the boolean argument hideUnreachableTypes is unclear.
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.
- `GetApiKeys`: 72 / 100
  - Major: Arguments without a description: organizationId, status, type, first, after.
  - Minor: String arguments with no constraint or example: organizationId.
  - Minor: Required identifiers whose description does not say where the value comes from: organizationId. Name the tool or the place that returns it, or models look it up first.
- `GetMyIdentity`: 75 / 100
- `GetGraphArtifactTags`: 78 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: graphId. Name the tool or the place that returns it, or models look it up first.

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
