Skip to main content
Glama

resolve_lookup

Resolve an organization slug to get its MCP/REST endpoints and trust level. Provide slug and country to retrieve endpoint URLs, trust score (0-100), trust level, and last heartbeat timestamp. Required before using other tools.

Instructions

Resolve an organization slug to its MCP/REST endpoints and trust level — the DNS of professional services. Use this when you know the org_slug and need its API endpoint before calling any other tool. Do NOT use for searching by vertical or location (use resolve.search or registry.search instead). Returns: endpoint URLs, trust score (0-100), trust level, and last heartbeat timestamp.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
org_slugYesSlug de la organización (ej: clinica-dental-sur)
countryNoPaís ISO 3166-1 alpha-2 (ej: cl, mx, ar). Default: clcl

Implementation Reference

  • The 'resolve.lookup' tool handler. It accepts an org_slug and optional country, and makes a GET request to /api/servicialo/resolve/{country}/{org_slug} via the public adapter.
    export const resolveTools = {
      'resolve.lookup': {
        description:
          'Resolve an organization slug to its MCP/REST endpoints and trust level — the DNS of professional services. ' +
          'Use this when you know the org_slug and need its API endpoint before calling any other tool. ' +
          'Do NOT use for searching by vertical or location (use resolve.search or registry.search instead). ' +
          'Returns: endpoint URLs, trust score (0-100), trust level, and last heartbeat timestamp.',
        schema: z.object({
          org_slug: z.string().describe('Slug de la organización (ej: clinica-dental-sur)'),
          country: z.string().default('cl').describe('País ISO 3166-1 alpha-2 (ej: cl, mx, ar). Default: cl'),
        }),
        handler: async (client: ServicialoAdapter, args: { org_slug: string; country?: string }) => {
          const country = args.country ?? 'cl';
          return client.pub.get(`/api/servicialo/resolve/${country}/${args.org_slug}`);
        },
      },
  • Zod schema for resolve.lookup: requires org_slug (string), optional country (default 'cl').
    schema: z.object({
      org_slug: z.string().describe('Slug de la organización (ej: clinica-dental-sur)'),
      country: z.string().default('cl').describe('País ISO 3166-1 alpha-2 (ej: cl, mx, ar). Default: cl'),
    }),
  • Import of resolveTools from './tools/public/resolve.js'.
    import { resolveTools } from './tools/public/resolve.js';
  • Spreading resolveTools into the publicTools record, making it available for registration.
    const publicTools: Record<string, ToolDef> = {
      ...registryTools as unknown as Record<string, ToolDef>,
      ...publicAvailabilityTools as unknown as Record<string, ToolDef>,
      ...publicServicesTools as unknown as Record<string, ToolDef>,
      ...resolveTools as unknown as Record<string, ToolDef>,
      ...a2aTools as unknown as Record<string, ToolDef>,
      ...docsQuickstartTools as unknown as Record<string, ToolDef>,
    };
  • The registerTools function that registers all tools (including resolve_lookup, after dot-to-underscore name conversion) with the MCP server.
    function registerTools(tools: Record<string, ToolDef>) {
      for (const [name, tool] of Object.entries(tools)) {
        // MCP spec requires tool names to match [a-zA-Z0-9_-]{1,64}
        const safeName = name.replace(/\./g, '_');
        server.tool(
          safeName,
          tool.description,
          tool.schema.shape,
          async (args) => {
            try {
              const result = await tool.handler(adapter, args as Record<string, unknown>);
              return {
                content: [
                  {
                    type: 'text' as const,
                    text: JSON.stringify(result, null, 2),
                  },
                ],
              };
            } catch (error) {
              const message = error instanceof Error ? error.message : String(error);
              return {
                content: [
                  {
                    type: 'text' as const,
                    text: `Error: ${message}`,
                  },
                ],
                isError: true,
              };
            }
          },
        );
      }
    }
Behavior4/5

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

No annotations provided, so description carries full burden. It lists returned fields (endpoint URLs, trust score, trust level, last heartbeat timestamp), adding behavioral context. Could explicitly state read-only nature, but implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: purpose, usage guideline, return values. No fluff, front-loaded, efficient.

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, but description details return structure. Purpose, parameters (via schema), usage, and returns are covered. Fully adequate for a simple lookup tool.

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 coverage is 100%, so baseline is 3. Description does not add extra meaning beyond schema; it implies country is for regional endpoint but doesn't elaborate. Adequate but not improved.

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?

Description clearly states the tool resolves an organization slug to endpoints and trust level, using a strong metaphor ('DNS of professional services'). It distinguishes itself from siblings like resolve_search and registry_search by specifying what it does vs. what it doesn't.

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?

Explicitly tells when to use (when you know org_slug and need API endpoint before other tools) and when not to use (searching by vertical/location, directing to resolve.search or registry.search).

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

Install Server

Other Tools

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/servicialo/mcp-server'

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