Skip to main content
Glama

afro.tools

Get Spec

get_spec
Read-onlyIdempotent

Returns the full spec payload for a provider + capability, including canonical_example.ts source code. Use this to get the complete integration guide — auth pattern, endpoint, schemas, gotchas, and a TypeScript example — before writing API calls.

The response includes a "status" field:

  • "verified": tested against the provider's API, in "sandbox" or "production" (verified_in / verification.environment)

  • "deprecated": the provider is retiring it — "deprecation" gives the reason, replaced_by (the capability to use instead) and removed_after

  • anything else (e.g. "ready", "unverified"): written from the provider's documentation, NOT tested against the live API "verification" says how and when it was tested; sandbox proves the request and response shapes, not production behaviour. "open_questions", when present, lists what the provider's docs do not answer: tell the user before relying on the spec. "environments", when present, gives each documented environment's base URL; a missing one is undocumented — ask the user, never guess. "auth.credentials" / "signing" / "token_exchange" / "apply" and "webhook.signature", when present, describe the auth and webhook signature steps exactly: follow them. "parameters", when present, lists the path, query and header parameters; "input_schema" is the request body only. A path parameter fills the {name} placeholder of endpoint.url. "success_condition", when present, names the response field (dotted path) that says the call succeeded: a 2xx response with another value is a failure.

If status is not "verified", always warn the user before generating integration code: "This spec has not been tested against the live API yet and may contain errors."

Args:

  • provider (string): Provider slug e.g. "paycard"

  • capability (string): Capability name e.g. "create_payment"

  • variant (string[]?): Discriminator values to keep, e.g. ["mobile_money_ghs"] or ["bank", "NGN"]. In every union (oneOf) of input_schema and response_schema, only the branches pinned to one of these values are kept; a union none of them matches is left whole. Without it, all branches are returned. The response lists every value under "variants" (discriminator property → values). A large spec also carries "_mcp_size_note": if your client cut the result, call again with the variant you need.

Returns: Full Spec object with canonical_example string (plus _mcp_warning when status is not "verified"). If not found: isError, with { error, available_capabilities } when the provider exists — capability names are each provider's own, pick one from that list — and did_you_mean (closest provider slugs or capability names) when one is close. A capability removed from the registry after a provider deprecation answers isError with removed_in, reason and alternatives. Use search_specs or list_providers first to discover available providers and capabilities.

Input Schema

NameRequiredDescriptionDefault
variantNoDiscriminator values to keep, e.g. ["mobile_money_ghs"] — see "variants" in search_specs
providerYesProvider slug e.g. "paycard"
capabilityYesCapability name e.g. "create_payment"

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare a safe read; the description goes far beyond by decoding the status taxonomy (verified/deprecated/other), explaining that sandbox verification does not prove production behaviour, and mandating a user warning when status is not 'verified'. It also predicts error shapes (isError with available_capabilities, did_you_mean, removed_in) and the _mcp_size_note truncation hint — behavior an agent could not infer from annotations.

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 core action and its result, then organized as a field-by-field key, which is scannable despite its length. It is longer than typical, but nearly every line is a disambiguation rule for a returned field an agent must interpret; only the trailing error-handling sentence overlaps slightly with the Returns section.

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?

No output schema exists, so the description carries the full burden of explaining the response — and it does, covering status, verification, open_questions, environments, auth blocks, parameters vs input_schema, success_condition, and error cases. For a read-only lookup tool with three simple params, nothing an agent needs to call or interpret it 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 already 100%, so baseline is 3; the description earns extra by explaining what variant actually does — filtering oneOf/union branches by discriminator value, leaving unmatched unions whole, and surfacing the result under 'variants'. It also clarifies that a path parameter fills {name} in endpoint.url. The provider/capability params get no added syntax guidance beyond the schema examples.

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?

The first sentence states a specific verb and resource — 'Returns the full spec payload for a provider + capability' — plus what is inside (canonical_example.ts source). An agent knows exactly what it gets and can distinguish it from search_specs (discovery) and list_providers (enumeration).

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?

It gives explicit timing — 'before writing API calls' — and names the prerequisites: 'Use search_specs or list_providers first to discover available providers and capabilities.' It also states what to do on failure (pick from available_capabilities, use did_you_mean), which routes the agent rather than leaving it to guess.

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.