Skip to main content
Glama

Plan a new ChurchTools person

ct_create_person

Generate a plan to create a ChurchTools person from first name, last name, and department IDs, while flagging possible duplicates before any write.

Instructions

Writes nothing: returns a plan to create a person, with persons of the same name as possible duplicates. Department ids come from GET /person/masterdata (ct_api_request). Most instances also demand statusId and campusId in fields, both from the same masterdata; an instance that makes the privacy agreement mandatory also demands privacyPolicyAgreementTypeId, privacyPolicyAgreementWhoId and privacyPolicyAgreementDate, which only the user can state. If ChurchTools refuses a duplicate, the result names duplicatePersonId.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fieldsNoFurther fields of the person, e.g. email, mobile, birthday
lastNameYes
firstNameYes
departmentIdsYesAt least one department id

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.7/5.0
Behavior1/5

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

The annotations declare readOnlyHint=false (i.e. the tool may modify state), while the description emphatically states 'Writes nothing' and only returns a plan. These are directly contradictory claims about whether the tool mutates the environment, so per the rubric this is an annotation contradiction.

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 most surprising fact ('Writes nothing') is front-loaded and each sentence carries distinct information about duplicates, required fields, and the failure case. It is dense but not padded, and no sentence is wasted.

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 no output schema, the description carries the return-value burden and does so by naming the duplicate listing and duplicatePersonId on rejection. Combined with the instance-dependent prerequisites, an agent has enough to call it correctly, though the handoff to execution is left implicit.

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 only 50%, and the description compensates well: it explains that departmentIds come from the masterdata endpoint and that the free-form `fields` object may require statusId, campusId, or the privacyPolicyAgreement* keys depending on the instance — detail the schema's 'e.g. email, mobile, birthday' does not convey. It adds no meaning for firstName/lastName, which is why it is not a 5.

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?

The description states a specific verb+resource — returning a *plan* to create a person — and explicitly scopes it with duplicate detection. The phrase 'Writes nothing: returns a plan' cleanly separates it from the actual creation/execution path (ct_execute_plan) and from ct_update_person, so an agent can tell what this tool is and is not.

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

Usage Guidelines4/5

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

It gives real usage context: department ids must come from GET /person/masterdata via ct_api_request, and it explains when extra fields (statusId, campusId, privacy*) become mandatory per instance. It does not explicitly point the agent to ct_execute_plan as the next step to actually apply the plan, which is the one missing routing cue.

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