Skip to main content
Glama

get_confidence_scores

Retrieve per-residue confidence scores for protein structure predictions using a UniProt accession. Set an optional threshold to filter results for higher accuracy.

Instructions

Get per-residue confidence scores for a structure prediction

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
thresholdNoConfidence threshold (0-100, optional)
uniprotIdYesUniProt accession

Implementation Reference

  • The main execution handler for the 'get_confidence_scores' tool. Validates input, fetches AlphaFold prediction data, generates mock per-residue confidence scores (pLDDT-like), applies optional threshold filter, computes summary statistics, and returns JSON-formatted results.
    private async handleGetConfidenceScores(args: any) {
      if (!isValidConfidenceArgs(args)) {
        throw new McpError(ErrorCode.InvalidParams, 'Invalid confidence score arguments');
      }
    
      try {
        const response = await this.apiClient.get(`/prediction/${args.uniprotId}`);
        const structures = response.data;
    
        if (!structures || structures.length === 0) {
          return {
            content: [
              {
                type: 'text',
                text: `No structure available for ${args.uniprotId}`,
              },
            ],
          };
        }
    
        const structure = structures[0];
    
        // Mock confidence data based on sequence length
        const confidenceData: ConfidenceData[] = [];
        const sequenceLength = structure.uniprotSequence.length;
    
        for (let i = 1; i <= sequenceLength; i++) {
          // Generate mock confidence scores (in real implementation, this would come from the API)
          const score = Math.random() * 100;
          const category = score >= 90 ? 'very-high' :
                          score >= 70 ? 'confident' :
                          score >= 50 ? 'low' : 'very-low';
    
          if (!args.threshold || score >= args.threshold) {
            confidenceData.push({
              residueNumber: i,
              confidenceScore: score,
              confidenceCategory: category as any,
            });
          }
        }
    
        return {
          content: [
            {
              type: 'text',
              text: JSON.stringify({
                uniprotId: args.uniprotId,
                confidenceScores: confidenceData,
                summary: {
                  totalResidues: sequenceLength,
                  filteredResidues: confidenceData.length,
                  averageConfidence: confidenceData.reduce((sum, c) => sum + c.confidenceScore, 0) / confidenceData.length,
                },
              }, null, 2),
            },
          ],
        };
      } catch (error) {
        return {
          content: [
            {
              type: 'text',
              text: `Error fetching confidence scores: ${error instanceof Error ? error.message : 'Unknown error'}`,
            },
          ],
          isError: true,
        };
      }
    }
  • src/index.ts:593-594 (registration)
    Dispatch registration in the CallToolRequestSchema handler switch statement, routing calls to 'get_confidence_scores' to the handleGetConfidenceScores method.
    case 'get_confidence_scores':
      return this.handleGetConfidenceScores(args);
  • Tool metadata registration including name, description, and input schema definition (uniprotId required string, optional threshold number 0-100) in the ListToolsRequestSchema response.
      name: 'get_confidence_scores',
      description: 'Get per-residue confidence scores for a structure prediction',
      inputSchema: {
        type: 'object',
        properties: {
          uniprotId: { type: 'string', description: 'UniProt accession' },
          threshold: { type: 'number', description: 'Confidence threshold (0-100, optional)', minimum: 0, maximum: 100 },
        },
        required: ['uniprotId'],
      },
    },
  • Type guard and validation helper specifically for 'get_confidence_scores' tool arguments, ensuring uniprotId is a non-empty string and threshold is optional number in [0,100].
    const isValidConfidenceArgs = (
      args: any
    ): args is { uniprotId: string; threshold?: number } => {
      return (
        typeof args === 'object' &&
        args !== null &&
        typeof args.uniprotId === 'string' &&
        args.uniprotId.length > 0 &&
        (args.threshold === undefined || (typeof args.threshold === 'number' && args.threshold >= 0 && args.threshold <= 100))
      );
    };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Augmented-Nature/AlphaFold-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server