Skip to main content
Glama

Show the cross-service call graph

get_service_graph
Read-onlyIdempotent

Return the whole cross-service call graph in one call: consumer -> producer edges across every protocol, unmatched calls, orphaned endpoints. Use it first for topology: who depends on a service, what a change ripples into. An edge carrying via_sdk reaches its producer through a published package rather than a call site of its own. An edge carrying same_service has one service at both ends, a service calling its own operation, and is listed after the cross-service ones. For one pair in depth, use check_compatibility. For the types on both sides of one pair's operations, use get_contract_pair. On a large project, call get_project_map first: it summarises this graph section by section and names the drill-down tool for each.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_service_graph"
  }
}

Input Schema

NameRequiredDescriptionDefault
repoNoYour repo as owner/repo (git remote) or just the repo name. Resolves which Carrick project to query.
limitNoRows per array per page (default 40, max 200), cut further when the page would not fit one response; the note says so. The *_count totals are never paged.
offsetNoRows to skip in every array (default 0). Pass the `next_offset` from a previous call to page through.
projectNoCarrick project slug to query. Omit to auto-resolve via `repo`, or omit both when the workspace has one project.
serviceNoOptional: return only edges that TOUCH this service (as consumer or producer), plus its unmatched calls and orphaned endpoints. Omit for the whole project graph.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / limit / description
      Previous value: -"Rows per array per page (default 40, max 200). The *_count totals are never paged."New value: +"Rows per array per page (default 40, max 200), cut further when the page would not fit one response; the note says so. The *_count totals are never paged."
  2. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  3. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety needs no restatement. The description adds real semantic context beyond that: what the via_sdk flag means (reaches producer via a published package, no call site), what same_service means, and that same_service edges are listed after cross-service ones — ordering behavior an agent could not infer.

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?

Purpose and the 'use it first for topology' value statement are front-loaded, followed by flag semantics and then the drill-down routing. The flag-semantics sentences are dense but each earns its place; the 'who depends on a service, what a change ripples into' clause is the only slightly padded phrase.

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 zero-required-parameter read tool with full schema coverage and rich annotations, the description covers what comes back (edges, unmatched calls, orphans), how to read edge flags, ordering, and which sibling to use for each follow-up. No output schema exists, and the enumerated return contents compensate adequately.

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%, so repo, limit, offset, project and service are already fully documented, including the service filter's 'edges that touch this service' semantics. The description adds nothing further about parameter behavior or interactions, so the baseline 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 — "Return the whole cross-service call graph in one call" — and enumerates the contents (consumer -> producer edges, unmatched calls, orphaned endpoints). It is immediately distinguishable from siblings like get_service_dependencies or check_compatibility, which cover narrower slices.

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 routing: "Use it first for topology", then names alternatives with the condition that selects them — check_compatibility for one pair in depth, get_contract_pair for types on both sides, get_project_map first on a large project. Both when-to-use and when-to-defer are covered.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.