Skip to main content
Glama

Map protein domains

interpro_get_protein_domains
Read-onlyIdempotent

Retrieve InterPro and member-signature matches on a canonical UniProt protein, preserving every location and discontinuous fragment. Optionally select records covering a residue, include extra predicted features, and include functional residue rules with provenance. Budgeted segments hold whole records in order: matches, requested extras, then requested residue rules sorted by key. The first segment carries protein metadata; continue coverage.nextCursor until hasMore is false.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "accession": "<accession>"
    },
    "name": "interpro_get_protein_domains"
  }
}

Input Schema

NameRequiredDescriptionDefault
cursorNoOpaque coverage.nextCursor with unchanged accession, residuePosition, includeExtraFeatures, and includeResidueAnnotations.
accessionYesCanonical six- or ten-character UniProt accession, without an isoform suffix.
residuePositionNoResidue position, 1-based and inclusive; must not exceed protein length.
includeExtraFeaturesNoInclude complete extra predicted features, returned after the last match; defaults to false.
includeResidueAnnotationsNoInclude complete functional residue rules after matches and requested extras; defaults to false.

Output Schema

NameRequiredDescriptionDefault
capNoMost match records one call reads; a segment can stop sooner at the response byte budget.
urlNoCanonical protein website URL.
errorNoPresent when the call failed. Absent on success.
shownNoSelected match records in this segment.
noticeNoInterpretation, continuation, or recovery guidance.
matchesNoWhole selected match records in this segment, sorted by earliest coordinate then accession; a match is never split across segments.
proteinNoComplete upstream protein metadata on the first segment, the call without cursor; continuation segments omit it.
coverageNoWhere this segment sits in the protein map: matches, requested extra features, then requested residue rules.
accessionNoCanonical UniProt accession.
selectionNoApplied residue, extra-feature, and residue-rule selection.
sourceUrlNoOfficial protein API source URL.
truncatedNoMore segments remain.
totalCountNoUpstream total matching records.
extraFeaturesNoWhole selected extra features in this segment, in feature-key order; {} when none are selected. Omitted when not requested or when this segment ends before the features that follow the last match.
effectiveQueryNoApplied selection as JSON.
residueAnnotationsNoWhole selected residue rules sorted by key; {} means the stage was reached with no selected rules. Omitted when unrequested or unreached.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedOutput schema / properties / coverage / properties / scannedMatches / description
      Previous value: -"Match records this segment covered, before residue filtering; across a complete walk the segments sum to totalMatches."New value: +"Match records this segment covered, before residue filtering; totalMatches is upstream's reported count, and a complete walk can cover a different number."
    • addedOutput schema / properties / protein / properties / proteome
      Added value: +{
      +  "description": "UniProt proteome accession, such as UP000000625; pass it as interpro_find_proteins_by_domain proteomeId with taxonId set to source_organism.taxId or an ancestor. Null when the protein belongs to no proteome.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  2. Changed13 schema fields changed
    • changedInput schema / properties / cursor / description
      Previous value: -"Opaque coverage.nextCursor with unchanged accession, residuePosition, and includeExtraFeatures."New value: +"Opaque coverage.nextCursor with unchanged accession, residuePosition, includeExtraFeatures, and includeResidueAnnotations."
    • addedInput schema / properties / includeResidueAnnotations
      Added value: +{
      +  "default": false,
      +  "description": "Include complete functional residue rules after matches and requested extras; defaults to false.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / coverage / description
      Previous value: -"Where this segment sits in the protein map: every match, then requested extra features."New value: +"Where this segment sits in the protein map: matches, requested extra features, then requested residue rules."
    • changedOutput schema / properties / coverage / properties / complete / description
      Previous value: -"True only when this call starts without a cursor and returns the whole map: every match and every requested extra feature."New value: +"True only when this call starts without a cursor and returns every match, requested extra feature, and requested residue rule."
    • changedOutput schema / properties / coverage / properties / hasMore / description
      Previous value: -"Whether another segment remains, holding more matches or requested extra features."New value: +"Whether another segment remains, holding matches, requested extras, or requested residue rules."
    • changedOutput schema / properties / coverage / properties / nextCursor / description
      Previous value: -"Opaque cursor resuming at the next whole match or extra feature, for the same protein and selection."New value: +"Opaque cursor resuming at the next whole match, extra feature, or residue rule for the same protein and selection."
    • addedOutput schema / properties / coverage / properties / returnedResidueAnnotations
      Added value: +{
      +  "description": "Whole residue rules returned in this segment.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedOutput schema / properties / coverage / properties / totalMatches / description
      Previous value: -"Upstream unfiltered total match count; a segment holding only extra features repeats the count the match list reported."New value: +"Upstream unfiltered total match count; extra-feature-only and residue-rule-only segments repeat the count reported by the match list."
    • addedOutput schema / properties / coverage / properties / totalResidueAnnotations
      Added value: +{
      +  "description": "Selected residue rules; present only when the residue stage is reached.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `retry_deadline_exceeded`: The shared fifty-second budget expires across protein metadata, match pages, and extra features. `invalid_cursor`: Cursor decoding or scope fails, the records it resumes inside changed or disagree with it, or upstream rejects continuation. `entry_withdrawn`: InterPro reports a withdrawn record with HTTP 410. `upstream_shape_invalid`: Upstream JSON, structure, or continuation is incompatible. `upstream_response_too_large`: An upstream response exceeds 4 MiB. `upstream_rejected`: InterPro returns an unhandled redirect or client rejection. `upstream_unavailable`: InterPro has a network or server failure; HTTP 501 is not retryable. `upstream_timeout`: InterPro returns HTTP 408/504 or an attempt exceeds its deadline. `upstream_rate_limited`: InterPro returns HTTP 429. `protein_not_found`: Canonical protein detail returns HTTP 204 or 404. `residue_out_of_range`: Requested position exceeds the fetched protein length. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `retry_deadline_exceeded`: The shared fifty-second budget expires across metadata, match pages, extra features, and residue rules. `invalid_cursor`: Cursor decoding or scope fails, the records it resumes inside changed or disagree with it, or upstream rejects continuation. `entry_withdrawn`: InterPro reports a withdrawn record with HTTP 410. `upstream_shape_invalid`: Upstream JSON, structure, or continuation is incompatible. `upstream_response_too_large`: An upstream response exceeds 4 MiB. `upstream_rejected`: InterPro returns an unhandled redirect or client rejection. `upstream_unavailable`: InterPro has a network or server failure; HTTP 501 is not retryable. `upstream_timeout`: InterPro returns HTTP 408/504 or an attempt exceeds its deadline. `upstream_rate_limited`: InterPro returns HTTP 429. `protein_not_found`: Canonical protein detail returns HTTP 204 or 404. `residue_out_of_range`: Requested position exceeds the fetched protein length. Other values are possible when a failure originates below the handler."
    • addedOutput schema / properties / residueAnnotations
      Added value: +{
      +  "additionalProperties": {
      +    "additionalProperties": {
      +      "$ref": "#/$defs/__schema0",
      +      "description": "An unmodified JSON value."
      +    },
      +    "properties": {
      +      "accession": {
      +        "description": "Residue rule accession.",
      +        "type": "string"
      +      },
      +      "locations": {
      +        "description": "Complete rule locations and residue fragments.",
      +        "items": {
      +          "additionalProperties": {
      +            "$ref": "#/$defs/__schema0",
      +            "description": "An unmodified JSON value."
      +          },
      +          "description": "Complete upstream match location.",
      +          "properties": {
      +            "fragments": {
      +              "description": "Nonempty sequence fragments.",
      +              "items": {
      +                "additionalProperties": {
      +                  "$ref": "#/$defs/__schema0",
      +                  "description": "An unmodified JSON value."
      +                },
      +                "description": "Complete continuous or discontinuous sequence fragment.",
      +                "properties": {
      +                  "dc-status": {
      +                    "description": "Discontinuity status.",
      +                    "type": "string"
      +                  },
      +                  "end": {
      +                    "description": "Inclusive 1-based end residue.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  "start": {
      +                    "description": "Inclusive 1-based start residue.",
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 9007199254740991,
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "start",
      +                  "end"
      +                ],
      +                "type": "object"
      +              },
      +              "minItems": 1,
      +              "type": "array"
      +            },
      +            "model": {
      +              "description": "Source model.",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "representative": {
      +              "description": "Representative match flag.",
      +              "type": [
      +                "boolean",
      +                "null"
      +              ]
      +            },
      +            "score": {
      +              "description": "Upstream match score.",
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "fragments"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "source_database": {
      +        "description": "Rule source database.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "accession",
      +      "source_database",
      +      "locations"
      +    ],
      +    "type": "object"
      +  },
      +  "description": "Whole selected residue rules sorted by key; {} means the stage was reached with no selected rules. Omitted when unrequested or unreached.",
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • changedOutput schema / properties / selection / description
      Previous value: -"Applied residue and extra-feature selection."New value: +"Applied residue, extra-feature, and residue-rule selection."
    • addedOutput schema / properties / selection / properties / includeResidueAnnotations
      Added value: +{
      +  "const": true,
      +  "description": "Present only when residue rules were requested.",
      +  "type": "boolean"
      +}
  3. First observed

TDQS

A4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, but the description adds behavior they cannot: fragment preservation for discontinuous matches, the fixed segment ordering (matches, then extras, then residue rules sorted by key), protein metadata placement in the first segment, and the pagination contract of following coverage.nextCursor until hasMore is false. That is substantial protocol-level disclosure for a paginated read.

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?

Four sentences, front-loaded with what is retrieved before the option and pagination details; every sentence carries information. The 'Budgeted segments hold whole records in order' phrasing is terse to the point of jargon, costing a little readability.

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 an output schema present, the description needn't detail return values, and it correctly focuses on ordering, options, and pagination. It leaves minor gaps: no mention of behavior for accessions with no matches and no explicit sibling routing, but nothing an agent needs to call it correctly 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 100%, so the baseline is 3, but the description still adds intent: residuePosition as 'records covering a residue', the two boolean flags as opt-in extras and provenance-bearing residue rules, and cursor as a continuation handle tied to hasMore. It stops short of restating the cursor's invariant-parameter rule, which the schema covers.

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

Purpose4/5

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

States a specific verb ('Retrieve') and resource ('InterPro and member-signature matches on a canonical UniProt protein'), which is precise enough to separate it from interpro_scan_sequence (which takes a sequence, not an accession). However, it never names a sibling tool, so the agent must infer the boundary itself.

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?

Usage is only implied: the 'canonical UniProt protein' phrasing and the 'without an isoform suffix' constraint hint at when the tool applies, and the residue/extra-feature flags describe options rather than when to choose this tool over interpro_find_proteins_by_domain or interpro_scan_sequence. No explicit when-not guidance or alternative routing is given.

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.