Skip to main content
Glama
SmartBear MCP server

SmartBear MCP server

Official
by SmartBear

Contract Testing: Admin Get Team User

contract-testing_admin_get_team_user
Read-onlyIdempotent

Check whether a specific user belongs to a team by providing the team and user UUIDs, so admins can verify membership before granting access or assigning resources.

Instructions

Check if a specific user is a member of a team (admin).

Toolset: Admin

Parameters:

  • teamId (string) required: UUID of the team

  • userId (string) required: UUID of the user

Input Schema

NameRequiredDescriptionDefault
teamIdYesUUID of the team
userIdYesUUID of the user

Output Schema

NameRequiredDescriptionDefault
_linksNo
_embeddedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.43.0
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "EmbeddedLink": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "href": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "templated": {
      +          "type": "boolean"
      +        },
      +        "title": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "Permission": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "description": {
      +          "type": "string"
      +        },
      +        "group": {
      +          "type": "string"
      +        },
      +        "label": {
      +          "type": "string"
      +        },
      +        "scope": {
      +          "type": "string"
      +        },
      +        "uuid": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "User": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "_embedded": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "roles": {
      +              "items": {
      +                "$ref": "#/$defs/UserRole"
      +              },
      +              "type": "array"
      +            },
      +            "teams": {
      +              "items": {
      +                "$ref": "#/$defs/UserTeam"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "_links": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "pf:tokens": {
      +              "$ref": "#/$defs/EmbeddedLink"
      +            },
      +            "self": {
      +              "$ref": "#/$defs/EmbeddedLink"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "active": {
      +          "type": "boolean"
      +        },
      +        "authenticationSource": {
      +          "type": "string"
      +        },
      +        "createdAt": {
      +          "type": "string"
      +        },
      +        "email": {
      +          "type": "string"
      +        },
      +        "externalId": {
      +          "type": "string"
      +        },
      +        "externalIdpId": {
      +          "type": "string"
      +        },
      +        "externalIdpUsername": {
      +          "type": "string"
      +        },
      +        "firstName": {
      +          "type": "string"
      +        },
      +        "identityProviderId": {
      +          "type": "string"
      +        },
      +        "lastLogin": {
      +          "type": "string"
      +        },
      +        "lastName": {
      +          "type": "string"
      +        },
      +        "lastTimeTokenAccessed": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "seatType": {
      +          "type": "string"
      +        },
      +        "type": {
      +          "anyOf": [
      +            {
      +              "const": 0,
      +              "type": "number"
      +            },
      +            {
      +              "const": 1,
      +              "type": "number"
      +            }
      +          ]
      +        },
      +        "typeDescription": {
      +          "type": "string"
      +        },
      +        "updatedAt": {
      +          "type": "string"
      +        },
      +        "uuid": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "UserRole": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "_links": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "self": {
      +              "$ref": "#/$defs/EmbeddedLink"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "permissions": {
      +          "items": {
      +            "$ref": "#/$defs/Permission"
      +          },
      +          "type": "array"
      +        },
      +        "uuid": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "UserTeam": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "_links": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "pf:integrations": {
      +              "$ref": "#/$defs/EmbeddedLink"
      +            },
      +            "pf:membership": {
      +              "$ref": "#/$defs/EmbeddedLink"
      +            },
      +            "self": {
      +              "$ref": "#/$defs/EmbeddedLink"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "uuid": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "_embedded": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "user": {
      +          "$ref": "#/$defs/User"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "_links": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "self": {
      +          "$ref": "#/$defs/EmbeddedLink"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Addedv0.40.0
  3. Removedv0.34.0
  4. First observedv0.27.1

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered elsewhere. The description's only added context is the '(admin)' tag, which hints that elevated privileges may be required — a useful but very small increment. It says nothing about pagination, error behavior on non-membership, or side effects.

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?

The core sentence is front-loaded and unambiguous, and the toolset/parameter block is short. However, the parameters section duplicates the schema documentation without adding value, which is minor waste for a two-parameter tool.

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?

An output schema exists, so the description need not explain return values, and rich annotations cover safety and idempotency. With full schema coverage and only two required parameters, the description is nearly sufficient; the remaining gap is the absence of any note about admin permissions or how a non-member result differs from an error.

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 both parameters are already documented as UUIDs in the input schema. The description's parameter list restates the same text verbatim, adding no new meaning such as format examples or what happens when a malformed UUID is supplied. Baseline 3 applies because the schema does all the work.

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 and resource: 'Check if a specific user is a member of a team', which is distinguishable from the sibling 'contract-testing_admin_list_team_users' (enumerate members) and from 'contract-testing_admin_get_user' (fetch user record). The '(admin)' qualifier scopes it to the admin toolset, but the description never explicitly names the sibling it should be preferred over.

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 membership-check framing implies when to use it (validating a single user/team pair) rather than listing all team members, but that contrast is only implied. There is no explicit when-not guidance, no mention of prerequisites such as admin permissions, and no routing to the set/patch/remove team-user siblings.

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

Deploy Server

Other Tools