Skip to main content
Glama
dalboki

sonsuchup-mcp

by dalboki

update_case_info

Update specific details of a case overview, including name, occurrence, report time, location, or summary. Only provided fields are changed.

Instructions

사건 개요의 일부 필드를 수정합니다. 전달한 필드만 변경됩니다.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
occurrenceNo
occurrenceErrorNo
reportTimeNo
locationNo
summaryNo

Implementation Reference

  • The handler that updates case info fields (name, occurrence, occurrenceError, reportTime, location, summary) by fetching the existing case, applying only provided fields, and saving.
    handler: async (input: Record<string, unknown>) => {
      const c = await fetchCase(input.id as string);
      const fields = [
        'name',
        'occurrence',
        'occurrenceError',
        'reportTime',
        'location',
        'summary',
      ] as const;
      for (const f of fields) {
        if (input[f] !== undefined) (c.caseInfo as Record<string, unknown>)[f] = input[f];
      }
      await saveCase(c);
      return { ok: true, url: caseUrl(input.id as string) };
    },
  • Zod input schema for update_case_info: id (required UUID) plus optional fields for each piece of case info.
    inputSchema: z.object({
      id: z.string().uuid(),
      name: z.string().optional(),
      occurrence: z.string().optional(),
      occurrenceError: z.number().int().min(0).optional(),
      reportTime: z.string().optional(),
      location: z.string().optional(),
      summary: z.string().optional(),
    }),
  • src/tools.ts:137-165 (registration)
    The full tool definition registered in the tools array, containing name, description, inputSchema, and handler.
    {
      name: 'update_case_info',
      description: '사건 개요의 일부 필드를 수정합니다. 전달한 필드만 변경됩니다.',
      inputSchema: z.object({
        id: z.string().uuid(),
        name: z.string().optional(),
        occurrence: z.string().optional(),
        occurrenceError: z.number().int().min(0).optional(),
        reportTime: z.string().optional(),
        location: z.string().optional(),
        summary: z.string().optional(),
      }),
      handler: async (input: Record<string, unknown>) => {
        const c = await fetchCase(input.id as string);
        const fields = [
          'name',
          'occurrence',
          'occurrenceError',
          'reportTime',
          'location',
          'summary',
        ] as const;
        for (const f of fields) {
          if (input[f] !== undefined) (c.caseInfo as Record<string, unknown>)[f] = input[f];
        }
        await saveCase(c);
        return { ok: true, url: caseUrl(input.id as string) };
      },
    },
  • Helper function that fetches a case from the database via RPC, used by the handler.
    async function fetchCase(id: string): Promise<CaseData> {
      const data = await callRpc<CaseData | null>('mcp_get_case', { p_id: id });
      if (!data) throw new Error(`사건을 찾을 수 없습니다: ${id}`);
      return data;
    }
    
    async function saveCase(caseObj: CaseData): Promise<string> {
      return await callRpc<string>('mcp_save_case', { p_case: caseObj });
    }
  • Helper function that saves a modified case back to the database via RPC, used by the handler.
    async function saveCase(caseObj: CaseData): Promise<string> {
      return await callRpc<string>('mcp_save_case', { p_case: caseObj });
    }
Behavior3/5

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

The description explicitly states that only passed fields are changed (partial update), which is valuable behavioral information. However, with no annotations and no output schema, it omits details on idempotency, authorization needs, return format, and error conditions.

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

Conciseness3/5

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

The description is a single sentence, which is concise but arguably too terse. It communicates the core behavior without superfluous content, but could benefit from additional context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters, no output schema, and no annotations, the description fails to provide adequate context. The agent does not know what the tool returns, how to format dates, or what 'occurrenceError' represents. This is insufficient for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It adds the concept of partial updates but does not describe any individual parameter (e.g., what 'occurrence' or 'occurrenceError' mean). This minimally helps the agent understand the update mechanism but leaves parameter semantics largely unaddressed.

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?

The description clearly states that the tool modifies fields of the case summary and specifies partial update behavior. The verb 'modify' and resource 'case info' are distinct from sibling tools like create_case or delete_case. However, it does not enumerate which fields belong to the 'overview', leaving some ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., add_record, create_case). The description does not specify prerequisites or situations where this tool is inappropriate.

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/dalboki/sonsuchup-mcp'

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