Skip to main content
Glama
CaseyTTS

Bullhorn MCP Agent

by CaseyTTS

create_note

Creates a Bullhorn note for a candidate or client contact with a preview-first safe write: review the preview, then confirm to execute.

Instructions

Create a Bullhorn note through the safe-write pipeline (preview by default).

With dry_run=True (the default) nothing is written to Bullhorn: the result holds operation_id and preview_hash. Execute exactly that preview with confirm_write(operation_id, preview_hash, "approve"). dry_run=False is accepted only when BULLHORN_NOTE_CREATE_MODE=direct. Writing requires the note.create scope (BULLHORN_ENABLED_WRITE_SCOPES) and BULLHORN_MCP_ACTOR.

Args: target_type: The person the note is about: "candidate" or "client_contact". target_id: The record id of the target. action_type: A tenant note action value (exact; never substituted). comments: The note text (1 to 10,000 characters; stored unchanged). associations: Additional records, each {"type": ..., "id": ...} (at most 10). idempotency_key: Optional caller key (kept 7 days) that prevents a duplicate write. dry_run: Preview only (default true).

Returns: JSON with operation, status, entity_type, record_id, associations, targets, activity, correlation_id, and operation_id/preview_hash for a preview.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dry_runNo
commentsYes
target_idYes
action_typeYes
target_typeYes
associationsNo
idempotency_keyNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it discloses that nothing is written while previewing, that a preview must be confirmed, the required note.create scope and BULLHORN_MCP_ACTOR, and the 7-day idempotency retention. These are exactly the safety and auth traits an agent needs before calling a mutation tool.

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?

Front-loaded with the pipeline behavior and default, then organized into Args and Returns sections. Slightly redundant because dry_run's default is stated in the opening paragraph and again in Args, but the surplus is small and every line carries information.

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?

For a mutation tool requiring auth scopes and an environment gate, the description covers the write pipeline, preconditions, parameter constraints, and a return summary. An output schema exists, so the return paragraph is a bonus rather than a necessity, and nothing needed to invoke it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does: target_type enumerates the allowed values, comments gives a 1–10,000 character bound and 'stored unchanged', associations caps at 10 with a shape, idempotency_key states its 7-day dedupe role, and dry_run restates the default. All 7 parameters gain meaning beyond their bare titles.

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?

States a specific verb+resource ('Create a Bullhorn note') and qualifies it with the mechanism ('through the safe-write pipeline'), which immediately separates it from siblings like get_notes and confirm_write. An agent can identify the operation without opening the schema.

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 explains the default behavior (dry_run=True previews, writes nothing), the follow-up path (execute exactly that preview with confirm_write(operation_id, preview_hash, "approve")), and the precondition for a direct write (dry_run=False only when BULLHORN_NOTE_CREATE_MODE=direct). This is a full when/when-not/alternative routing.

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