Loppee
Server Details
Agent-first US business trust registry with neutral Trust Cards and local search.
- Status
- Unhealthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.4/5 across 55 of 55 tools scored. Lowest: 3.3/5.
Many tools have overlapping purposes, particularly in search (search_businesses, search_category, search_jobs, lookup_business, recommend_businesses, compare_businesses) and admin operations (multiple list_ and decide_ tools). Descriptions are verbose but do not clearly differentiate tool boundaries, leading to potential confusion for an agent.
Tools generally follow a verb_noun pattern with underscores, but some names are excessively long (e.g., decide_admin_manual_verification_submission, set_admin_business_lifecycle) and mix tenses. Overall pattern is consistent enough for readability, but deviations exist.
With 55 tools, the server is overpopulated. The domain of a business directory/jobs platform would typically require fewer tools; many are narrowly scoped or redundant. The count feels excessive for the apparent purpose.
The tool set covers core workflows: search, messaging, reviews, jobs, business management, and admin operations. However, notable gaps exist: no tool for creating a business, managing verification directly, or full lifecycle control (e.g., deletion of business). This leaves agents with dead ends.
Available Tools
58 toolsapply_to_jobApply To JobAIdempotentInspect
Apply to an active Loppee job on behalf of the calling customer account. Requires a customer personal agent key whose account_id matches the account_id argument and whose allowed_actions include apply_to_job. The seeker is never charged. The resume must be a base64 PDF, DOC, or DOCX file and is stored in a private bucket; employers and the applicant retrieve it only through scoped short-lived signed URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| resume | Yes | ||
| account_id | Yes | ||
| cover_note | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly=false, idempotent=true), the description discloses key behavioral traits: authentication requirements, no charge to seeker, private resume storage with scoped short-lived signed URLs. This adds substantial context for an agent evaluating side effects and security.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences deliver the main action, prerequisites, cost, and security details without fluff. Front-loaded purpose ensures immediate understanding. Every sentence adds necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex write operation with nested parameters and an output schema, the description covers purpose, auth, constraints, cost, and data handling. It is complete enough for an agent to correctly invoke the tool without further clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates well. It explains the resume parameter in detail (base64 PDF/DOC/DOCX, private storage) and the account_id requirement (matching key). job_id and cover_note are left to name inference, but the core complex parameters are enriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Apply to an active Loppee job'), specifies the actor ('on behalf of the calling customer account'), and differentiates from sibling tools like list_job_applications, withdraw_job_application, and update_job_application_status. The verb+resource+scope is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context including prerequisites (customer personal agent key with matching account_id and allowed_actions), the restriction to 'active' jobs, and cost implications. Does not explicitly name alternatives, but the context makes it obvious this is the create-application action among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_my_locationClear My Saved LocationAIdempotentInspect
Remove the calling customer's saved service location. Idempotent: clearing when nothing is saved returns available=false. Provider IP remains neutral context only and cannot activate local category/recommendation results, Sponsored placement, or impressions. On the next local search ask exactly: "Where should I search? For local categories, share your current location or use Home only when it is marked exact. Another city/ZIP is for area context or business-name lookup only."
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | The customer account id this personal-agent key belongs to (confirm with get_agent_identity). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the annotations: it explains the idempotent outcome ('clearing when nothing is saved returns available=false'), clarifies that provider IP remains neutral and cannot trigger local placements or impressions, and gives the exact follow-up prompt for the next local search. This aligns with and elaborates on the idempotentHint and openWorldHint annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary action and then provides behavioral details in a logical order. The embedded quote for the next local search is longer than typical tool guidance, but it serves a concrete interaction purpose. No words are wasted, though it could be more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter), full schema coverage, existing output schema, and annotations, the description is complete. It covers the operation, idempotency, side effects on local search behavior, and the exact next-step prompt. Nothing important is missing for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter account_id is fully described in the schema with a clear instruction to confirm via get_agent_identity. The description mentions 'calling customer's,' which loosely connects to the parameter, but it does not add new semantic meaning beyond the schema's description. Per the baseline for high schema coverage, a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action, 'Remove the calling customer's saved service location,' which clearly identifies the tool's verb and resource. It distinguishes this from sibling tools like set_my_location and get_my_location by using 'clear'/'remove' as the unique operation. The scope ('calling customer's') adds useful context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to clear a previously saved location and adds post-clear follow-up guidance, but it never explicitly contrasts this tool with set_my_location or get_my_location. There is no 'use this tool when X, otherwise use Y' guidance, though the action verb makes the primary use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_businessesCompare BusinessesARead-onlyInspect
Compare published businesses only, in request order, by explicit v3 class and identity-verified-reviewer quality context. Registry rows remain unavailable on this tool. Every row retains its exact disclosure; payment never affects reviewer quality. Exposure-plan payment changes discovery reach and, when Sponsored ordering is active, labeled position-weighted exposure only within the same verification class and verified-review reputation band. It never changes business-profile publication, verification, review authority, reputation, moderation, class ordering, or reputation band. Loppee Jobs is a separate optional paid product; its billing affects job-posting activation only and never business verification or directory ranking.
| Name | Required | Description | Default |
|---|---|---|---|
| business_ids | Yes | Two to twenty Loppee business ids to compare. Duplicates are de-duplicated. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive behavior. The description adds substantial behavioral context: payment never affects reviewer quality, exposure-plan effects on discovery reach, and explicit non-effects on publication, verification, reputation, and ranking. This goes well beyond the annotations and clarifies non-obvious data provenance policies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core point, but the payment-related sentences are verbose and arguably tangential for a comparison tool. For example, the exposure-plan explanation and the Loppee Jobs clarification could be condensed. Several sentences repeat similar non-effects, making the description longer than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (read-only comparison with payment-related caveats), the description thoroughly covers the key constraints: published-only, registry unavailability, request-order significance, and non-influence of payment on quality metrics. Output schema exists, so return values don't need explanation. The completeness is high, though the verbosity slightly detracts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single param, so baseline is 3. The description adds meaning by stating 'in request order', clarifying that the order of business_ids affects the comparison output—an important detail not present in the schema description. This extra semantic value pushes the score to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Compare' and the resource 'published businesses', and adds scope with 'only published businesses' and 'in request order'. It distinguishes from sibling tools like lookup_business by implying multi-business comparison, but does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool ('Compare published businesses only') and provides a negative constraint ('Registry rows remain unavailable on this tool'), but it does not explicitly state when to prefer this tool over siblings like search_businesses or recommend_businesses, nor does it name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_location_handoffAsk User for Precise LocationAInspect
Create a short-lived current precise-location request with a browser fallback. Once approved, it can authorize local category/recommendation reach and Sponsored exposure. Follow next_action exactly: poll only for poll_location_handoff; for ask_user_to_open_location_url, show the fallback immediately and explain that the user can enable Location for your assistant once under Account > My external AI agent in the Loppee iPhone app so future requests complete automatically. The assistant receives readiness and normal business results, never latitude or longitude. Requires an active database-backed customer personal-agent key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The tool has annotations (readOnlyHint=false) indicating mutation, and the description adds important behavioral context: the request is 'short-lived', has 'browser fallback', authorizes 'local category/recommendation reach and Sponsored exposure' upon approval, and crucially states 'The assistant receives readiness and normal business results, never latitude or longitude.' It also details the polling flow. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is six sentences but each conveys necessary details: purpose, approval effect, polling workflow, conditional URL display, output privacy, and key requirement. It is front-loaded and free of filler. It's slightly longer than minimal but all content is functional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no parameters and relying on the output schema, the description provides a complete operational picture: it explains the purpose, prerequisites, step-by-step workflow, conditional behavior, and privacy guarantee. It also notes the browser fallback. This is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero properties, so schema description coverage is 100% and there are no parameters to explain. The description mentions poll_after_seconds and location_url, which are likely output fields, not parameters. Baseline 4 applies as no parameter compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Create' with the resource 'location_handoff' and explains it's a 'short-lived current precise-location request with a browser fallback.' This clearly distinguishes it from sibling tools like get_location_handoff, which retrieves the result. The title 'Ask User for Precise Location' reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit operational guidance: 'Wait poll_after_seconds, then call get_location_handoff once' and 'Only if that poll is still awaiting_user should you show or send location_url.' It also states a prerequisite (active database-backed customer personal-agent key). However, it does not explicitly compare against alternatives like set_my_location or get_my_location, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decide_admin_manual_verification_submissionDecide Manual Verification SubmissionADestructiveIdempotentInspect
Approve or reject one current entity/license submission through Loppee's audited manual authority. Rejection should include a controlled owner_reason_code plus a separate internal reason; omission maps to the controlled generic other copy only for legacy compatibility, and approval forbids owner_reason_code. Every official_source_manual decision requires the exact nonempty authority name and valid HTTPS source URL; document_review cannot carry an external source. official_record_not_found is additionally limited to a rejected official_source_manual review. Requires a team/admin-agent key with the separately granted complete_manual_verification action, all method-specific checks, a validity window for approval, and the exact type-to-confirm phrase. The database reauthorizes the exact key and derives the class; the agent cannot set a class or approve its own evidence. Insurance is not accepted by this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | ||
| outcome | Yes | ||
| source_url | No | Exact HTTPS official source URL. Required for every official_source_manual decision and forbidden for document_review. | |
| observed_at | No | ||
| valid_until | No | ||
| confirmation | Yes | ||
| submission_id | Yes | ||
| identifier_match | No | ||
| source_authority | No | Exact official authority name. Required for every official_source_manual decision; document_review cannot carry an external authority. | |
| holder_name_match | No | ||
| owner_reason_code | No | Controlled owner-visible rejection reason. New clients should always send it for rejection; omission maps to other only for legacy compatibility. official_record_not_found is valid only for a rejected official_source_manual review with a nonempty source_authority and valid HTTPS source_url. | |
| verification_method | Yes | ||
| verified_service_scope | No | ||
| active_or_good_standing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive and non-read-only behavior. The description adds valuable context: ownership of rejection reasons, conditional rules for source_url/source_authority based on verification_method, the restriction that official_record_not_found only applies to official_source_manual, and the reauthorization/class-derivation behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph with no visual structure. It front-loads the core purpose but then presents many rules in a stream of sentences. Each sentence adds information, but the format is not scannable, making it harder for an agent to extract the key constraints quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 14 parameters, annotations, and existing output schema, the description covers the most important behavioral rules: authorization needs, per-method requirements, legacy compatibility, and separation of internal vs owner-facing reasons. It omits return behavior and error cases, but those are likely covered by the output schema. The overall coverage is strong for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 21%, so the description carries the burden for parameter semantics. It explains key interactions: owner_reason_code is required for rejection but forbidden for approval, source_authority and source_url are required for official_source_manual and forbidden for document_review, and valid_until is the approval validity window. It does not disambiguate every parameter, but it covers the most conditional ones.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair: 'Approve or reject one current entity/license submission'. It clearly distinguishes this from sibling list tools (e.g., list_admin_manual_verification_submissions) by stating this tool executes the decision rather than merely listing submissions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context for when this tool is applicable (manual authority decisions) and prerequisites such as the complete_manual_verification action, but it never explicitly contrasts it with alternatives or states when not to use it. The reader must infer that siblings like list_admin_manual_verification_submissions or get_admin_verification_case serve different purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_recommendationExplain RecommendationARead-onlyInspect
Explain one published business's v3 class and exact disclosure. Registry recommendation rationale remains on the category recommend row; explain_recommendation stays published-only because a business_id alone cannot prove the prior category, location, and fallback context.
| Name | Required | Description | Default |
|---|---|---|---|
| business_id | Yes | Loppee business id of a published Trust Card. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the readOnlyHint annotation by explaining that the tool works only for published businesses and why a business_id alone is insufficient to reconstruct the prior category, location, and fallback context. It does not, however, describe error handling or fallback behavior when an unpublished business is passed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and the second sentence explains a key constraint without unnecessary verbosity. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, an output schema, and clear annotations, the description provides sufficient context for an agent to invoke the tool correctly. It explains the tool's scope, limitations, and relationship to recommendation rationale, making it complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers business_id with a description, and the tool description adds context about the published-only nature and the v3 class, which helps clarify the parameter's use. Since schema coverage is 100%, the extra detail in the description provides modest added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Explain one published business's v3 class and exact disclosure.' It uses a specific verb and resource, and distinguishes itself from recommendation rationale tools by stating that the rationale stays on the category recommend row.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool (for published businesses) and when not to use it (for recommendation rationale, which remains on the category recommend row). It provides a clear exclusion and points to an alternative location, satisfying the 'when/when-not/alternatives' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_admin_analyticsGet Back-office AnalyticsARead-onlyInspect
Read bounded Back-office operational and projected-revenue analytics. Requires a team/admin-agent key whose exact allowed_actions include view_financial; a view-only key cannot call it. This tool is read-only and never changes billing, placement, verification, or publication.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already declare readOnlyHint=true, the description adds specifics: 'never changes billing, placement, verification, or publication' and the auth requirement. This goes beyond the annotations and gives valuable operational context, though it doesn't address potential side effects like rate limits or data bounds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and every sentence adds unique value. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and an output schema, so return values are covered. The description adequately conveys auth requirements and read-only behavior. However, the missing explanation of the 'days' parameter leaves a gap for an agent to understand default behavior and expected input semantics, making it not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the 'days' parameter at all. The schema only provides enum values (7, 30, 90, 'all') without explaining what the parameter controls or how it affects the response. The description fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads bounded Back-office operational and projected-revenue analytics. This is a specific verb ('Read') and resource ('Back-office analytics'), but it does not explicitly distinguish itself from similar siblings like get_admin_overview, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context, including a required authentication condition (team/admin-agent key with view_financial) and states the tool is read-only. However, it does not explicitly name alternatives or exclusions, so it lacks full when-to-use vs. not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_admin_overviewGet Back-office OverviewARead-onlyInspect
Read the Loppee back-office queue totals and launch checks. Requires a team/admin-agent key whose exact allowed_actions include view. This is a Back-office tool; consumer and business-owner keys cannot call it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable context by specifying the exact scope (queue totals and launch checks) and required authorization, which annotations do not convey. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the action and resource, the second covers access requirements. No filler or redundant repetition of schema/annotation information; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no params, output schema exists, readOnly annotation), the description effectively covers what the tool does, its scope, and access control. It lacks explicit guidance on differing from similar admin tools, but this is a minor gap for a straightforward overview tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100% and the description inherently compensates. The baseline for 0 params is 4; the description doesn't need to explain parameters, and it doesn't, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads 'Loppee back-office queue totals and launch checks', using the specific verb 'Read' and distinct resource. This separates it from sibling admin tools like get_admin_analytics (analytics) or list_admin_businesses (lists), which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides access prerequisites (team/admin-agent key with 'view' allowed_actions) and explicitly excludes consumer/business-owner keys, but it does not explain when to use this tool versus other back-office tools. No alternatives or when-not-to-use guidance is given, leaving the decision to the agent based solely on the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_admin_verification_caseGet Back-office Verification CaseARead-onlyInspect
Open one audited verification case file by business_id. Requires a team/admin-agent key with view. The response is the same minimized v3 projection used by the Back-office and never grants authority to change the business class.
| Name | Required | Description | Default |
|---|---|---|---|
| business_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable context beyond these: authentication requirements (team/admin-agent key with view), the exact response projection (minimized v3), and that it 'never grants authority to change the business class,' which clarifies the read-only nature and potential side effects. This is meaningful behavioral disclosure beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It leads with the primary action in the first sentence and adds necessary context in the second. Every sentence provides useful information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one read-only parameter, output schema available), the description covers all essential aspects: what it does, the required auth, the response format, and the lack of write authority. No further context is needed for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has only one parameter (business_id) with no description, so schema coverage is 0%. The description compensates by explicitly saying 'by business_id,' which clarifies that the parameter identifies which case to open. For a simple string ID, this is sufficient and adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: 'Open one audited verification case file by business_id.' It identifies the resource (verification case file) and the key parameter (business_id). The inclusion of 'one' distinguishes it from the sibling list_admin_verification_cases, making its unique purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: this tool fetches a single case file by ID, which implies it is used when you need a specific case rather than a list. It also notes a prerequisite (team/admin-agent key with view). However, it does not explicitly name alternatives or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_capabilitiesGet Agent CapabilitiesARead-onlyInspect
Return the Loppee agent contract, endpoints, policy rules, and available MCP tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is known. The description adds value by enumerating the specific contents returned (contract, endpoints, policy rules, available MCP tools), which goes beyond the generic 'Return' statement. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the verb 'Return', and contains no extraneous words. Every phrase adds specificity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple, zero-parameter, read-only introspection tool with an output schema present. The description sufficiently covers the return content, and the output schema handles the structural details. No further context is needed for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to explain. The baseline for zero-parameter tools is 4, and the description does not need to add parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Return' and clearly identifies the resource as the Loppee agent contract, endpoints, policy rules, and available MCP tools. This distinguishes it from the sibling tool get_agent_identity, which focuses on identity rather than capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to retrieve the agent's capabilities and configuration, which is clear context for a zero-parameter introspection tool. It does not explicitly name alternatives or exclusions, but the purpose is self-evident from the resource list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_agent_identityGet Agent IdentityARead-onlyInspect
Identify the calling agent from its API key: returns the account_id, scope_kind, label, and exact allowed_actions this key may perform. It also states explicitly that the connecting principal supplies and operates the external agent while Loppee issues only scoped API/MCP access. Call this first to confirm a key is wired correctly and to discover this agent's permissions before attempting any write tool. Requires a valid agent API key (X-LOPPEE-API-Key or Authorization: Bearer); returns an auth error when the key is missing or revoked.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already indicate readOnlyHint and destructiveHint, the description adds valuable behavioral context: it reveals that the principal supplies the external agent and Loppee issues scoped access, and it explicitly states the error condition ('returns an auth error when the key is missing or revoked'). This goes beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loads the core purpose, and each sentence earns its place: purpose/returns, usage context, and authentication/error behavior. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description covers all necessary aspects: what it does, when to call it, the auth requirement, and error behavior. It is a complete and self-sufficient description for an AI agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the description appropriately focuses on the authentication context (X-LOPPEE-API-Key or Bearer token) rather than inventing parameters. This adds meaningful information about how the tool is invoked, surpassing the baseline of 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Identify the calling agent from its API key' and lists the specific return fields (account_id, scope_kind, label, allowed_actions). This is a specific verb+resource definition that distinguishes it from siblings like get_agent_capabilities by emphasizing identity and permission discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Call this first to confirm a key is wired correctly and to discover this agent's permissions before attempting any write tool.' It also implies when not to use it (not for write operations) and provides a clear directive for sequencing. This goes beyond a vague hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_business_reviewsGet Business Reviews (paginated)ARead-onlyInspect
Read public reviews for a published business or visible Registry-page business. Every review stays visible. reviewer_verification_label and quality_ranking_weight expose Passkey-or-verified-phone quality authority separately from verification_label and ranking_weight interaction evidence. Unqualified legacy reviews remain visible with quality_ranking_weight=0. Verified reviewer means the registered account completed Passkey or phone verification. It does not prove a transaction or government identity.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number (default 1). | |
| limit | No | Reviews per page (default 5, max 50). | |
| ratings | No | Star-rating filter: return only reviews with these ratings, e.g. [1] or [4,5]. Omit for all ratings. | |
| business_id | Yes | Loppee business id of a published business. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=true annotation, the description discloses that every review remains visible, including unqualified legacy reviews with quality_ranking_weight=0. It also defines 'verified reviewer' as Passkey/phone verification, explicitly noting it does not prove a transaction or government identity — an important interpretation pitfall. This adds meaningful behavioral context beyond what annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is five sentences and about 80 words, with the core purpose in the first sentence and supporting semantics in the rest. While somewhat dense, each sentence adds value, covering visibility guarantees, quality ranking semantics, and verification caveats. It is appropriately sized for the domain complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's domain complexity (verification vs. interaction evidence, legacy reviews), the description covers eligibility, review visibility, field semantics, and verification limits. The presence of an output schema means return structure is documented elsewhere, so the description need not duplicate that. It fully equips an agent to understand the tool's data and caveats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full descriptions for all four parameters (business_id, page, limit, ratings) with 100% coverage, so the baseline is 3. The description does not add parameter-level detail, but it clarifies output field semantics like quality_ranking_weight, which indirectly informs how filters might be used. No additional parameter syntax is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Read public reviews for a published business or visible Registry-page business,' which clearly identifies the resource (public reviews) and verb (read). This differentiates it from sibling tools like lookup_business or get_trust_card, which target other business data. The eligibility criterion further refines the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the conditions under which the tool applies: published or visible Registry-page businesses, implying it should not be used for hidden/unpublished listings. It does not name alternative tools, but for the specific function of reading reviews, no sibling is a direct substitute. This gives the agent a clear contextual trigger for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_location_handoffCheck Location RequestARead-onlyIdempotentInspect
Check whether the customer approved current precise-location authority. This returns only status and expiry; it never returns coordinates. Once ready, pass handoff_id as location_handoff_id to search_businesses, search_category, or recommend_businesses.
| Name | Required | Description | Default |
|---|---|---|---|
| handoff_id | Yes | Opaque handoff id returned by create_location_handoff. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and idempotentHint annotations, the description adds crucial behavioral context: it returns only status/expiry, never coordinates, and references the handoff lifecycle ('Once ready'). This is valuable transparency for a tool that could otherwise be mistaken for a location getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three terse sentences: purpose, return behavior, and downstream usage. Every sentence carries distinct information, front-loaded for quick scanning. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read-only tool with a full output schema and 100% schema coverage, the description explains the tool's role in the larger handoff flow and clarifies the non-return of coordinates. It is complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of handoff_id as an opaque UUID from create_location_handoff. The description adds extra meaning by specifying how the id should be used downstream (renamed to location_handoff_id), which is not in the schema. This enhances understanding beyond the structured field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') and resource ('current precise-location authority'), clearly distinguishing this from location retrieval tools like get_my_location. It also explicitly states what it returns (status and expiry) and what it never returns (coordinates), leaving no ambiguity about its function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this tool is for checking approval status and provides downstream usage instructions ('pass handoff_id as location_handoff_id to...'). It implicitly excludes coordinate retrieval with 'never returns coordinates,' but does not explicitly name alternative tools or provide when-not-to-use scenarios beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_location_optionsGet Safe Location ChoicesARead-onlyIdempotentInspect
Return only the calling customer's safe Home metadata plus opaque saved_location_ref, current-location handoff availability, and provided city/ZIP context. Never returns ZIP, address, latitude, or longitude. Ask exactly: "Where should I search? For local categories, share your current location or use Home only when it is marked exact. Another city/ZIP is for area context or business-name lookup only." Only current or Home with kind=saved_exact authorizes local category/recommendation discovery; provided city/ZIP and coarse Home are neutral name-disambiguation context. Requires an active scoped consumer personal-agent key.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | The customer account id this personal-agent key belongs to (confirm with get_agent_identity). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only and idempotent behavior. The description adds critical behavioral details: it never returns ZIP, address, latitude, or longitude, and specifies which location types authorize actions. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense paragraph that covers all necessary aspects. It is front-loaded with the core return specification, but the length is justified by the behavioral complexity. Slightly verbose but efficient given the nuance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description sufficiently covers return values, constraints, and usage context. It does not need to detail output structure. The description is complete for a safe-location-options tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, account_id, is fully described in the input schema (100% coverage). The description adds context by stating that the key must be an 'active scoped consumer personal-agent key,' extending the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns the calling customer's safe Home metadata, opaque saved_location_ref, current-location handoff availability, and provided city/ZIP context. It explicitly lists what is never returned, distinguishing it from sibling tools like get_my_location or get_location_handoff.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance, including exact phrasing to ask the user and conditions under which data authorizes discovery (e.g., current or Home with kind=saved_exact). It also notes the requirement for an active scoped consumer personal-agent key, covering prerequisites and contextual usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_locationGet Safe Location Choices (Compatibility Alias)ARead-onlyIdempotentInspect
Backward-compatible safe alias for get_location_options. Returns only availability, safe labels, precision metadata, and opaque references; it never returns ZIP, address, latitude, or longitude. Ask exactly: "Where should I search? For local categories, share your current location or use Home only when it is marked exact. Another city/ZIP is for area context or business-name lookup only." Only current or saved_exact authorizes local category/recommendation reach. Discovery location never affects any business's verification class, review authority, review reputation, or recommendation eligibility.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | The customer account id this personal-agent key belongs to (confirm with get_agent_identity). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive hints, and the description adds meaningful behavioral context: it never returns ZIP/address/lat/long, returns only safe subsets, and states that discovery location never affects business verification, review authority, review reputation, or recommendation eligibility. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with its alias and return limitations, then provides a user prompt and policy caveats. It is somewhat verbose due to the quoted question and multiple clauses, but every sentence carries substantive guidance rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one fully documented parameter, an output schema, and rich annotations, the description covers all necessary context: safe behavior, authorization rules, and what the tool can/cannot return. No meaningful gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description for account_id is complete (100% coverage) and already instructs to confirm with get_agent_identity. The tool description adds no parameter-specific detail, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Get Safe Location Choices') and clearly identifies itself as a backward-compatible safe alias for get_location_options. It explicitly enumerates the exact return scope (availability, safe labels, precision metadata, opaque references) and what it never returns, distinguishing it from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use and when-not-to-use guidance: 'Only current or saved_exact authorizes local category/recommendation reach' and 'Another city/ZIP is for area context or business-name lookup only.' It also includes an exact user-facing prompt, giving clear operational direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricing_plansGet Loppee Pricing PlansARead-onlyInspect
Return Loppee's published exposure plans, feature bullets, branch add-ons, and promotions. Editing exposure-plan prices or promotions cannot change publication, verification class, review authority, reputation, moderation, or class ordering. Loppee Jobs is billed separately and affects job-posting activation only. Exposure-plan payment changes discovery reach and, when Sponsored ordering is active, labeled position-weighted exposure only within the same verification class and verified-review reputation band. It never changes business-profile publication, verification, review authority, reputation, moderation, class ordering, or reputation band. Loppee Jobs is a separate optional paid product; its billing affects job-posting activation only and never business verification or directory ranking.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true, but the description goes far beyond by explaining the real-world impact of plan data: editing prices cannot change verification/reputation, and payment only affects discovery reach under specific conditions. It also clearly separates Loppee Jobs billing. This is rich, non-obvious context that substantially aids correct interpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, but it becomes repetitive. Sentences 2 and 4 restate nearly the same list of unaffected attributes ('publication, verification class, review authority, reputation, moderation, class ordering'). This redundancy could be trimmed without losing meaning, making it longer than necessary for a no-parameter getter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an existing output schema, the description fully covers what the tool returns and the semantic meaning of its contents. It explains the scope of exposure plans, the effects of payment, the separation of Loppee Jobs, and what the data does not influence. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to explain. Per the rubric, 0 params earns a baseline of 4. The description adds no parameter details because none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb ('Return') and specific resource ('Loppee's published exposure plans, feature bullets, branch add-ons, and promotions'). This distinguishes it from all sibling tools, none of which target pricing plans. Even with the extra caveats, the primary purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the getter name and read-only nature. The description clarifies what the plans do and do not affect, which indirectly tells when this data is relevant, but it offers no explicit alternatives or exclusion criteria. For a simple getter, this is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trust_cardGet Trust CardARead-onlyInspect
Fetch the public v3 Trust Card for one published business or visible Registry-page business by business_id; domain_key remains published-only. Both use the same Trust Card contract. A Registry card retains its exact claim status and disclosure, remains outside the published Verified/Listed classes, and never fabricates missing facts.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_key | No | Normalized domain key such as example-com. | |
| business_id | No | Loppee business id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior, lowering the bar. The description adds valuable behavioral context: the same Trust Card contract applies to both, Registry cards retain exact claim status/disclosure, remain outside published classes, and never fabricate missing facts. This goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action, and each clause carries essential information without redundancy. The structure is compact and highly readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is fully self-contained for the tool's purpose, covering both business types, the identifier constraints, and the behavioral guarantees. With an output schema present, return values need no explanation, and the description addresses all critical context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds meaningful semantics by clarifying that domain_key is restricted to published-only businesses, which is not evident from the schema's simple 'Normalized domain key' description. This enhances parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Fetch the public v3 Trust Card' with a specific resource and scope. It distinguishes between business_id and domain_key and covers both published and Registry-page businesses, making it distinct from sibling tools like lookup_business.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context by explaining that business_id works for both published and visible Registry-page businesses, while domain_key is published-only. This is an implicit exclusion that guides selection, though it does not explicitly name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_admin_business_claimsList Business ClaimsARead-onlyInspect
Page the full business-ownership claim queue. Requires a team/admin-agent key with review_intake. This read never grants ownership or changes a claim.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| filter | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful context beyond the annotations: 'never grants ownership or changes a claim' reinforces the readOnlyHint and clarifies that listing does not mutate claims. It also discloses the auth requirement (review_intake), which is not in the schema or annotations. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the action and scope, the second states requirements and a safety guarantee. It is concise, front-loaded, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple list operation with an output schema covering return values. The description covers purpose, auth, and read-safety. It does not explain filter semantics, but the enum values ('open'/'all') are self-evident, and the pagination parameters are straightforward. Sufficiently complete for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no descriptions for limit, filter, or offset (0% coverage), and the description provides no parameter semantics. While the parameter names are somewhat self-explanatory, the description adds no value for these fields, leaving the agent to infer meaning from names and enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'Page the full business-ownership claim queue.' The verb 'page' indicates paginated listing, and the resource is specific. This distinguishes it from sibling tools like triage_admin_business_claim and list_admin_verification_cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite: 'Requires a team/admin-agent key with review_intake.' It implies the tool is for read-only paging of the queue. However, it does not explicitly mention when not to use it or name alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_admin_businessesList Back-office BusinessesARead-onlyInspect
Search and page the Loppee business-operations pipeline. Requires a team/admin-agent key with view. V3 results expose only the current Verified or Listed class and private operational completion, never a public numeric grade. This tool never edits a business.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | ||
| limit | No | ||
| state | No | ||
| cursor | No | ||
| search | No | ||
| source | No | ||
| status | No | ||
| category | No | ||
| claim_status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint and destructiveHint annotations, it adds real value: required key type, V3 data exposure rules (current class only, no public numeric grade), and a firm non-mutation guarantee. This is rich behavioral disclosure with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise, front-loaded sentences with no filler. Each sentence contributes specific context: action, auth requirement, result semantics, and non-mutation guarantee.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and strong annotations, the description covers auth, result shape, and safety, which is largely complete. However, it leaves ambiguous what 'business-operations pipeline' means and does not explain key filter parameters, so a bit more context would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% with nine parameters, so the description must compensate, but it only mentions 'Search and page' and never explains sort, cursor, status, category, source, or claim_status semantics. The description provides no parameter-level meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches and pages the Loppee business-operations pipeline, with a specific verb and resource. It distinguishes from edit operations via 'never edits a business,' but does not explicitly differentiate among sibling list_admin_* tools like claims or verification cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage in an admin context by requiring a team/admin-agent key and states the non-editing behavior, but it does not provide explicit when-to-use or alternative tool guidance. The context is clear only at a general level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_admin_manual_verification_submissionsList Manual Verification SubmissionsARead-onlyInspect
Read the private entity/license manual-review queue. Requires a team/admin-agent key whose exact allowed_actions include complete_manual_verification. Signed document links are short lived; raw storage references are never returned. Merely reading a document cannot mint Verified.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | ||
| limit | No | ||
| offset | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/destructiveHint annotations, the description discloses sensitive details: permission requirements, short-lived signed links, raw storage references never returned, and the 'cannot mint Verified' caveat. This adds significant behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each dense with information. The main purpose is front-loaded, and every sentence contributes security or behavioral context without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description covers key aspects: purpose, required permissions, link behavior, and a critical security property. The main omission is parameter semantics, but the tool's security-oriented context is well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no explanation for any of the four parameters (q, limit, offset, status). It merely says 'read the queue,' leaving the agent to guess what each parameter does. This is a major gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Read the private entity/license manual-review queue,' using a specific verb and resource. It clearly distinguishes this from sibling tools like decide_admin_manual_verification_submission by focusing on read-only access to the manual-review queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a concrete prerequisite ('Requires a team/admin-agent key whose exact allowed_actions include complete_manual_verification') and warns that reading cannot mint Verified, implying you need a different tool for approval. It doesn't explicitly name alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_admin_review_anomaliesList Review Anomaly FlagsARead-onlyInspect
Read the private flag-only review-anomaly queue. Requires a team/admin-agent key with moderate_reviews. Flags never auto-hide, remove, or reweight a review and never change a business class.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, but the description adds meaningful guarantees: flags never auto-hide, remove, reweight a review, or change a business class. It also discloses the queue is private and permissioned, going well beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with the action front-loaded in the first sentence. The second sentence efficiently provides access and safety context. Every word earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with annotations, an output schema, and simple optional parameters, the description sufficiently covers purpose, permission, privacy, and behavioral guarantees. It does not need to explain return values because the output schema handles that, and the parameters are self-explanatory from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has three parameters (limit, offset, status) with 0% description coverage, and the description does not compensate by explaining their meaning or how status filtering works. The schema's enums and ranges help somewhat, but the description adds no parameter-level value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Read the private flag-only review-anomaly queue,' using a specific verb and resource. It clearly distinguishes itself from the sibling resolve_admin_review_anomaly by emphasizing read-only access and the flag-only scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by stating the required key permission (moderate_reviews) and that this is the private queue for reviewing anomalies. However, it does not explicitly name alternatives like resolve_admin_review_anomaly or state when not to use it, so it stops short of full explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_admin_verification_casesList Back-office Verification CasesARead-onlyInspect
List the server-owned verification work queue. Requires a team/admin-agent key with view. Reading a case never changes its class, evidence, publication, or assignment.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | ||
| filter | No | ||
| search | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that reading never changes class, evidence, publication, or assignment, and specifies the auth requirement (team/admin-agent key with view). This goes beyond annotations and provides useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise two-sentence structure that front-loads purpose and auth requirement, followed by a precise non-mutation guarantee. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description adequately covers purpose and safety. However, it leaves pagination and filter semantics undocumented, which are necessary for effective use of the list functionality. Decent but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description offers no explanation of limit, cursor, filter, or search. The filter enum values ('needs_attention', 'ready', etc.) are opaque and not decoded. The agent must rely entirely on the schema without any contextual help.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists the server-owned verification work queue, using a specific verb and resource. This distinguishes it from siblings like get_admin_verification_case, which retrieves a single case, and from list_admin_manual_verification_submissions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing the back-office verification queue and notes the required auth key, but does not explicitly say when to use it versus alternatives like get_admin_verification_case. No exclusions or when-not guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_customer_messagesList Customer MessagesARead-onlyIdempotentInspect
List inbound customer messages for a business you manage, newest first, each with any replies already sent. Follow pagination.next_cursor until pagination.has_more=false to traverse older history. Pass conversation_id from a webhook resource for one exact business-scoped lookup; conversation_id and cursor are mutually exclusive. Requires allowed_actions include list_customer_messages. Requires an owner-scoped management key, explicit business scope, and the tool's permission; exposure tier does not grant or remove access. Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now. Use the returned interaction_id with reply_to_customer_message.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max messages to return (default 20). | |
| cursor | No | Opaque pagination cursor returned by the previous page. Do not combine with conversation_id. | |
| account_id | Yes | ||
| business_id | Yes | ||
| conversation_id | No | Exact conversation referenced by a webhook; returns zero or one scoped thread. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds valuable context beyond annotations: 'newest first', inclusion of replies, pagination mechanics, auth constraints, and the platform's limited role ('Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent'). No contradictions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded, but the description contains substantial extraneous platform context: 'Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now.' These sentences do not aid tool invocation and inflate length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description is highly complete: it covers pagination, scope, auth/permissions, mutually exclusive parameters, and next-step usage. The presence of an output schema means return values need not be detailed here. Even the v3 context, while verbose, explains the platform's role in access, adding to completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, and the description compensates by clarifying cursor and conversation_id semantics: 'conversation_id and cursor are mutually exclusive' and 'Pass conversation_id from a webhook resource for one exact business-scoped lookup.' It also explains cursor usage in the pagination loop. However, account_id and business_id are not elaborated beyond their obvious role, so a 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List inbound customer messages for a business you manage, newest first, each with any replies already sent.' This clearly distinguishes the tool from siblings like list_support_messages and list_my_conversations by focusing on customer messages for a managed business.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: pagination traversal ('Follow pagination.next_cursor until pagination.has_more=false'), the mutual exclusivity of conversation_id and cursor, and prerequisites ('Requires allowed_actions include list_customer_messages... Requires an owner-scoped management key, explicit business scope, and the tool's permission'). It also points to a related tool: 'Use the returned interaction_id with reply_to_customer_message.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_job_applicationsList Job Applications (Employer)ARead-onlyIdempotentInspect
List applications to the job postings of a business you manage, newest first — the employer side of the hiring pipeline. PII NOTICE: rows include the applicant's name, email, cover note, and (when attached) a SHORT-LIVED signed resume_url (about 5 minutes; re-list to refresh, null if signing fails). This is an explicit owner grant: the business owner must have checked this action when connecting this key (it is never granted by default), and access stays attributable to that scoped key. Handle applicant data only for this business's hiring workflow — never republish it or use it beyond hiring. Optional job_id/status filters and offset pagination (limit up to 100, default 25). Requires allowed_actions include list_job_applications. Requires an owner-scoped management key, explicit business scope, and the tool's permission; exposure tier does not grant or remove access. Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now. Read-only: listing never changes application statuses and never affects verification class or recommendation order.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max applications to return (default 25). | |
| job_id | No | Only applications to this posting. | |
| offset | No | Pagination offset into the newest-first list. | |
| status | No | Only applications currently in this status. | |
| account_id | Yes | The managing agent's account id (from get_agent_identity). | |
| business_id | Yes | The employer business (must be in the key's allowed_business_ids). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description goes far beyond by revealing PII handling, short-lived resume URLs, explicit owner grant requirements, and the guarantee that listing never changes statuses or verification class. This is rich behavioral context that annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and structured well, but the description contains extraneous business boilerplate ('Under v3, a business owner connects an external agent they already use... Access is available at no charge for now.') that does not aid tool invocation. While not overly long, some sentences do not earn their place, preventing a higher score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, ordering, filters, pagination, PII handling, authorization requirements, and read-only guarantees. With an output schema present, return values do not need to be described. This is fully complete for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so all parameters are already documented. The description summarizes filters and pagination ('Optional job_id/status filters and offset pagination (limit up to 100, default 25)') but adds no additional per-parameter semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List applications to the job postings of a business you manage, newest first.' It clearly identifies the employer side of the hiring pipeline, distinguishing it from the sibling tool list_my_job_applications (which is presumably the applicant's own view).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states this is the employer-side tool, implying it is not for job seekers, and details prerequisites such as 'requires allowed_actions include list_job_applications' and an owner-scoped management key. While it does not explicitly name alternative tools, the context is clear enough for an agent to decide when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_missed_contactsList Missed ContactsBRead-onlyIdempotentInspect
List captured MISSED CONTACTS for the business this management agent is scoped to. The v3 exposure plan does not lock identity, message content, or access to this owner workflow. Rows remain restricted to the exact owner-authorized business, and the key must include list_missed_contacts. Reading missed contacts never affects verification class, ranking, or reviews.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| account_id | Yes | ||
| business_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds valuable context by explicitly stating that reading missed contacts never affects verification class, ranking, or reviews, and that rows are restricted to the exact authorized business. This goes beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately sized and front-loaded with the core purpose, but it includes jargon such as 'v3 exposure plan' and 'owner workflow' that may obscure meaning. Some sentences repeat the access restriction theme, making it less crisp than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the primary purpose, access scope, and side-effect guarantees, which is helpful for a read-only list tool. However, the complete absence of parameter explanations and the presence of an output schema mean the description is only partially complete; users must rely on the schema for parameter meaning.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, and the description does not explain any parameters (account_id, business_id, limit, offset). Since the schema itself has no descriptions, the tool description must compensate, but it provides no parameter semantics whatsoever.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'MISSED CONTACTS' for the scoped business, using the specific verb 'List' and identifying the exact resource. This distinguishes it from sibling list tools by its unique resource type and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to view missed contacts for the owner-authorized business), but it does not explicitly contrast it with alternative tools or state when not to use it. It provides context about scoping and security but no direct usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_conversationsList My ConversationsARead-onlyIdempotentInspect
List the calling customer account's OWN message conversations with businesses, newest first, each including the business's replies — the read half of send_message_request, so an agent can report answers back to its user. Follow pagination.next_cursor until pagination.has_more=false to traverse older history. Pass conversation_id from a webhook resource for one exact scoped lookup; conversation_id and cursor are mutually exclusive. Requires a valid scoped agent API key whose account_id matches the account_id argument (call get_agent_identity first); keys scoped to send_message_request may also read. Read-only: never modifies anything.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max conversations to return (default 20). | |
| cursor | No | Opaque pagination cursor returned by the previous page. Do not combine with conversation_id. | |
| account_id | Yes | ||
| conversation_id | No | Exact conversation referenced by a webhook; returns zero or one scoped thread. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, not destructive), the description discloses pagination behavior, auth requirements, account_id match constraint, scoped key permissions, and the guarantee that it never modifies anything. This adds meaningful context beyond structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a focused paragraph with every sentence delivering value: purpose, pagination, parameter usage, auth, and safety. It is front-loaded with the core function and then provides necessary operational details without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, the description fully covers pagination, authentication, parameter relationships, and relationship to send_message_request. An output schema exists, so the absence of return-value details is acceptable. It is sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 75% of parameters with descriptions. The description enriches semantics by explaining conversation_id's webhook origin, mutual exclusivity with cursor, and the requirement that account_id match the API key. It compensates for the undocumented account_id parameter, though more explicit examples could improve clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists the calling account's own message conversations with businesses, newest first, and includes business replies. It distinguishes itself from siblings by explicitly calling itself 'the read half of send_message_request' and noting its conversational scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: reporting answers to the user, traversing pagination, and using conversation_id from a webhook for exact lookup. It also clarifies mutual exclusivity of cursor and conversation_id, and gives auth prerequisites (call get_agent_identity first, key scoping).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_job_applicationsList My Job ApplicationsARead-onlyIdempotentInspect
List the calling customer account's OWN job applications, newest first — the read half of apply_to_job, so an agent can report what happened to each application. Each entry carries the employer-set status (submitted, viewed, shortlisted, rejected, hired, or withdrawn), a job + employer summary, the cover note, and — when a resume is attached — a short-lived signed resume_url (about 5 minutes; re-list to refresh, resume_url is null if signing fails). Optional status filter and offset pagination (limit up to 50, default 20). Requires a customer personal agent key whose account_id matches the account_id argument (call get_agent_identity first); keys minted before this tool existed may read with apply_to_job scope. Read-only: listing never changes an application's status and never affects any employer's verification class or recommendation order — application status is set by the employer, never by this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max applications to return (default 20). | |
| offset | No | Pagination offset into the newest-first list. | |
| status | No | Only return applications currently in this employer-set status. | |
| account_id | Yes | The customer account id this personal-agent key belongs to (confirm with get_agent_identity). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, but the description adds substantial context: it guarantees 'listing never changes an application's status and never affects any employer's verification class or recommendation order', discloses the resume_url lifetime (~5 minutes, null on signing failure), and documents key/account requirements. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is about 170 words, but every sentence carries meaningful information: scope, ordering, return fields, URL expiry, pagination, auth, and read-only guarantees. It is front-loaded with the main purpose and efficiently organized. It is slightly dense but appropriate for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 params, auth constraints, output schema exists), the description covers all necessary context: what it returns, how to paginate, prerequisites, and side-effect guarantees. The output schema handles return structure, so no missing information is evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters have schema descriptions (100% coverage), so the baseline is 3. The description adds the 'newest first' ordering and a high-level summary of pagination/filtering, but does not add detail beyond what the schema already provides. It correctly respects the schema's coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence is 'List the calling customer account's OWN job applications, newest first' — a specific verb+resource+scope. It also explicitly frames it as 'the read half of apply_to_job', which distinguishes it from the mutation sibling and from list_job_applications (likely the admin version). This is unambiguous and fully differentiates the tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the intended use case ('so an agent can report what happened to each application') and gives a concrete prerequisite ('call get_agent_identity first'). It also notes the account_id must match the key. The 'OWN' scope and pairing with apply_to_job imply when to use vs alternatives, and the auth requirement is an explicit condition for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notificationsList Owner NotificationsARead-onlyIdempotentInspect
List owner notifications for the business this management agent is scoped to. Returns event metadata, summaries, and resource links only; it never includes raw CVs, full message bodies, or applicant PII. Requires allowed_actions include list_notifications.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| limit | No | ||
| offset | No | ||
| unread | No | ||
| account_id | Yes | ||
| business_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds valuable behavioral context: returns only metadata/summaries/links, never raw CVs, full message bodies, or applicant PII, and requires a specific permission. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, each adding distinct value: the main action, data exclusions, and permission requirement. No redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, scope, data exclusions, and permission requirements. With an output schema present, return values are already structured. It does not mention sorting or filter semantics, but standard list parameters are visible in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 6 parameters with 0% description coverage, and the description does not explain account_id, business_id, type, limit, offset, or unread. It only implies scope through 'scoped to,' leaving the agent to infer parameter meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List owner notifications for the business this management agent is scoped to,' providing a specific verb, resource, and scope. It also clarifies what is returned (event metadata, summaries, resource links) and what is excluded, which distinguishes it from sibling list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context about the scoped business and the required permission ('Requires allowed_actions include list_notifications'), but it does not explicitly name alternatives or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_saved_businessesList Saved BusinessesARead-onlyIdempotentInspect
List the calling account's OWN saved-business shortlist, newest first — the read half of save_business, so an agent can review and report the shortlist it has built. Returns business_id, business_name, business_source, category, city, state, notes, and saved_at for up to 100 entries (default 20, newest-first, no cursor). Requires a valid scoped agent API key whose account_id matches the account_id argument (call get_agent_identity first); keys scoped to save_business may also read. Read-only: never modifies the shortlist and never affects any business's verification class or recommendation order. Returns a machine-readable auth error (invalid_agent_api_key / agent_account_scope_violation) when the key is absent or out of scope.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max shortlist entries to return (default 20). | |
| account_id | Yes | The customer/service-agent account id this key belongs to (confirm with get_agent_identity). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite strong annotations (readOnlyHint, idempotentHint, destructiveHint: false), the description adds substantial behavioral context: 'Read-only: never modifies the shortlist and never affects any business's verification class or recommendation order.' It also discloses error behavior (invalid_agent_api_key, agent_account_scope_violation) and pagination semantics (up to 100, default 20, no cursor), which go beyond annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place: scope, sort order, sibling relationship, output fields, limits, pagination, auth prerequisite, read-only guarantee, and error types. It is front-loaded with the core purpose and logically organized, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (auth scoping, account-binding, read-only guarantees) and the existing rich schema/annotations/output schema, the description covers all necessary context: auth errors, ordering, default limit, no cursor, and relationship to save_business. It is fully self-sufficient for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description enriches parameter meaning significantly. It clarifies the limit default and max ('up to 100 entries (default 20, newest-first, no cursor)'), ties account_id to the agent key and get_agent_identity ('account_id matches the account_id argument'), and states the returned fields. This adds practical semantics beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description precisely states the tool's function with a specific verb and resource: 'List the calling account's OWN saved-business shortlist, newest first.' It clearly differentiates from sibling tools like save_business/unsave_business by being the read half, and from general search/recommend tools by emphasizing 'OWN saved-business shortlist.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames when to use: 'the read half of save_business, so an agent can review and report the shortlist it has built.' Also provides prerequisite guidance: 'Requires a valid scoped agent API key... call get_agent_identity first' and notes key scoping alternatives ('keys scoped to save_business may also read'). This gives clear context and exclusions beyond simply naming the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_support_messagesList Support MessagesARead-onlyIdempotentInspect
Read the Loppee support conversation(s) for a business you manage — the owner↔Loppee-support thread, newest first, each with its full message log and status (open/pending/resolved/closed). SCOPED to THIS business only: it never returns the owner's support tickets about their other businesses. Requires allowed_actions include list_support_messages. Requires an owner-scoped management key, explicit business scope, and the tool's permission; exposure tier does not grant or remove access. Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now. Read-only; pair with send_support_message to reply.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max conversations to return (default 20). | |
| account_id | Yes | ||
| business_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, etc.), the description adds valuable behavioral details: newest-first ordering, inclusion of full message logs and statuses, strict business scope, permission prerequisites, and the v3 external-agent context. It fully discloses that this is a read-only operation and that access is not granted by exposure tier, providing transparency beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy but well-structured: it leads with the core purpose, then scope, permissions, v3 context, and finally pairing advice. Each sentence adds some value, though the v3 external-agent explanation feels tangential for tool selection. Overall, it is informative without being unwieldy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return structure, but it still explains key aspects like ordering, statuses, and scoping. It covers permission requirements and the read-only nature, making it sufficient for an agent to invoke correctly. The v3 context is extra but does not create gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only the 'limit' parameter has a schema description (33% coverage). The description helps clarify that 'business_id' refers to the business being managed and that results are scoped to that business, but it does not explain 'account_id' or 'limit' semantics. Since the schema covers little, the description partially compensates but leaves some parameter meaning implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads Loppee support conversations for a managed business, with a specific verb ('Read') and resource ('support conversation(s)'). It distinguishes itself from siblings by specifying the owner↔Loppee-support thread, scoping to 'THIS business only', and mentioning 'pair with send_support_message'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is for reading support conversations and explicitly pairs with send_support_message for replies. It also notes permission requirements (allowed_actions, owner-scoped key) and that exposure tier does not grant access, which helps an agent decide when it can be used. However, it does not explicitly contrast with similar sibling tools like list_customer_messages or list_my_conversations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_businessLookup BusinessARead-onlyInspect
Universal, pay-independent business-name lookup. Exact and genuine-prefix matches remain relevance-authoritative and return the requested entity with its truthful Verified, Listed, or claim-state-accurate Registry classification. Coarse location may disambiguate names only; without precise authority results are commercially neutral, sponsored=false, and record no impressions. Exposure-plan payment changes discovery reach and, when Sponsored ordering is active, labeled position-weighted exposure only within the same verification class and verified-review reputation band. It never changes business-profile publication, verification, review authority, reputation, moderation, class ordering, or reputation band. Loppee Jobs is a separate optional paid product; its billing affects job-posting activation only and never business verification or directory ranking.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Business name to look up through the universal, pay-independent name lane. | |
| limit | No | Maximum result count from 1 to 50. | |
| cursor | No | Opaque cursor returned in next_cursor by the previous v3 search page. Omit for the first page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the readOnlyHint annotation by detailing that results are commercially neutral unless an exposure plan is active, that sponsored ordering only affects position within the same verification class, and that the tool never alters business profiles, verification, or reputation. It also clarifies the separation of Loppee Jobs billing. This provides deep behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then details behavioral nuances. While it is longer than necessary, each sentence adds meaningful caveats about exposure, sponsored ordering, and non-mutating guarantees. It is well-structured and not redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With read-only annotations, an output schema present, and pagination parameters covered in the schema, the description fully covers the tool's behavioral complexity, including the pay-independence model and what it does not affect. It is complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters (name, limit, cursor) with clear descriptions, and the context signal indicates 100% schema coverage. The description adds no additional parameter-level detail beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Universal, pay-independent business-name lookup', which clearly identifies the verb (lookup) and resource (business name). It distinguishes itself from siblings like search_businesses by emphasizing exact-name lookup and relevance-authoritative matching, making the purpose unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about what the tool does (pay-independent name lookup) but does not explicitly state when to use it versus alternatives like search_businesses. No exclusions or alternative tool references are mentioned, so usage guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_business_dealManage Business DealAInspect
Create, edit, publish, unpublish, or delete a deal/coupon for a business you manage. This mutates deal records: operation=create makes a draft, operation=publish takes a draft live, operation=unpublish cancels public display, operation=update overwrites supplied deal fields, and operation=delete removes the deal. Not idempotent for create/delete/publish transitions. Requires allowed_actions include manage_deals. Requires an owner-scoped management key, explicit business scope, and the tool's permission; exposure tier does not grant or remove access. Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now. Deals are included plan-neutrally; the exposure plan does not change deal access. Call get_agent_identity first. Never affects the verification class or recommendation order.
| Name | Required | Description | Default |
|---|---|---|---|
| terms | No | ||
| title | No | ||
| deal_id | No | Required for update/publish/unpublish/delete. | |
| ends_at | No | ISO date; null/absent = no expiry. | |
| operation | Yes | ||
| starts_at | No | ISO date; null/absent = live immediately. | |
| account_id | Yes | The managing agent's account id (from get_agent_identity). | |
| promo_code | No | ||
| business_id | Yes | The business this deal belongs to (must be in the key's allowed_business_ids). | |
| description | No | ||
| discount_label | No | Human-readable discount, e.g. "20% off" or "$10 off". |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'operation=delete removes the deal,' which is a destructive action, but the annotations set destructiveHint to false. This is a direct contradiction. Additionally, the description does mention non-idempotent transitions ('Not idempotent for create/delete/publish transitions'), but the contradiction overshadows this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and operation details, but it becomes verbose in the middle with platform business model information ('Under v3, a business owner connects an external agent... Loppee provides scoped API and MCP access only... Access is available at no charge for now'). This goes beyond what is needed for tool invocation and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 params, 5 operations, permissions), the description covers operations, state transitions, idempotency, and prerequisites well. It also clarifies that the tool does not affect verification class or recommendation order. The existence of an output schema means return values need not be described, so the coverage is strong despite some missing edge-case details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at 55%, the description adds value by explaining operation semantics ('operation=create makes a draft, operation=publish takes a draft live'), the conditional requirement for deal_id ('Required for update/publish/unpublish/delete'), and the meaning of account_id and business_id. It also clarifies date behavior (null/absent = live immediately or no expiry) even though the schema partially covers that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create, edit, publish, unpublish, or delete a deal/coupon for a business you manage.' It clearly distinguishes this management tool from customer-facing siblings like redeem_coupon and validate_coupon by focusing on the full lifecycle of deal records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear prerequisites and context: 'Requires allowed_actions include manage_deals,' 'Requires an owner-scoped management key, explicit business scope,' and 'Call get_agent_identity first.' While it does not explicitly name alternative tools, it implies usage for managing deals rather than redeeming or validating them, which is enough given the sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_job_postingManage Job PostingAInspect
Create, edit, publish, pause, close, or delete a job posting for a business you manage (mirrors manage_business_deal). operation=create makes a DRAFT posting (never live directly), and draft/update/pause/close/delete stay available to an authorized owner even when the business is not currently Verified. operation=publish requires the business to be currently claimed, Verified, and published (jobs_verified_business_required otherwise). When live billing is enabled and payment is required, publish returns status=checkout_required with a Stripe Checkout url that the HUMAN business owner must open and pay — this tool NEVER completes payment itself; when billing is off, publish activates the posting directly at no charge. operation=update overwrites only the supplied fields (status changes go through publish/pause/close). operation=delete removes the posting (idempotent: deleting a missing posting reports deleted). Separate Loppee Jobs billing controls posting activation ONLY — it never ranks jobs, never changes the business's verification class, and never changes recommendation order. Seekers are never charged. Requires allowed_actions include manage_job_posting. Requires an owner-scoped management key, explicit business scope, and the tool's permission; exposure tier does not grant or remove access. Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now. Call get_agent_identity first. Not idempotent for create/publish/delete transitions.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Defaults to the employer's city for create. | |
| state | No | Two-letter US state; defaults to the employer's state for create. | |
| title | No | Job title (required for create). | |
| job_id | No | Required for update/publish/pause/close/delete. | |
| skills | No | ||
| benefits | No | ||
| category | No | Free-text category label; defaults to the employer's category. | |
| schedule | No | ||
| apply_url | No | ||
| operation | Yes | create makes a DRAFT; publish takes it live (returns checkout_required with a Stripe url for the HUMAN owner when payment is required); pause/close change visibility; delete removes the posting. | |
| account_id | Yes | The managing agent's account id (from get_agent_identity). | |
| salary_max | No | ||
| salary_min | No | ||
| business_id | Yes | The employer business (must be in the key's allowed_business_ids). | |
| description | No | ||
| postal_code | No | ||
| direct_apply | No | true = seekers apply on Loppee (free for them); false = external apply_url. | |
| contact_email | No | ||
| salary_period | No | hour, year, or month. | |
| category_alias | No | Exact taxonomy LEAF alias for field/domain search (discover via GET /v1/taxonomy/suggest); defaults to the employer's primary alias. | |
| street_address | No | ||
| workplace_type | No | ||
| employment_type | No | ||
| salary_currency | No | ||
| experience_level | No | ||
| compensation_text | No | Human-readable pay line, e.g. "$25-$30/hr + commission". | |
| total_job_openings | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly details behavioral traits beyond annotations: create always makes a draft, publish requires verified/published business and may return a Stripe checkout for a human to pay (never completed by the tool), update overwrites only supplied fields, delete is idempotent for missing postings, and billing never affects rankings. It also discloses auth/scope requirements and the 'not idempotent' caveat.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place, covering operations, billing, auth, and prerequisites. It is front-loaded with the core verb list and logically organized; no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 27-parameter tool with an output schema, the description covers all major workflows, side effects, prerequisites, billing nuances, and access requirements. It leaves little ambiguity about when and how to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 44%, but the description compensates by explaining the critical operation parameter's semantics (draft, publish checkout, pause/close/delete), update's merge behavior, and create defaults for city/state/category. It does not enumerate all 27 parameters, but it adds meaningful value on the most complex ones.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb list ('Create, edit, publish, pause, close, or delete') and identifies the resource ('a job posting for a business you manage'). It also distinguishes from siblings by noting it mirrors manage_business_deal, making its scope clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (owner managing job postings) and prerequisites ('Call get_agent_identity first', requires allowed_actions, owner-scoped key). It does not explicitly contrast with alternatives like apply_to_job, but the scope is self-evident and it warns what the tool does not do (billing only activates, never ranks jobs).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_notification_readMark Owner Notification ReadAIdempotentInspect
Mark one owner notification as read for the business this management agent is scoped to. Requires allowed_actions include mark_notification_read.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ||
| business_id | Yes | ||
| notification_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the operation requires permission (allowed_actions) and is scoped to the agent's business, adding context not present in the annotations (readOnlyHint false, idempotentHint true). It does not contradict the annotations and clarifies the mutating nature of the action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and scope, with no unnecessary words. The second sentence adds a critical permission requirement efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a low-complexity tool with an output schema and good annotations. The description covers the action, scope, and a required permission, making it sufficiently complete for an agent to select and invoke the tool correctly. There is no need to detail return values because an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the parameter names (account_id, business_id, notification_id) are self-explanatory. The description's overall purpose ('mark one owner notification as read') implies the role of notification_id, but it doesn't explicitly elaborate on each parameter, leaving some interpretation to the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Mark' with a clearly defined resource ('owner notification') and scoping ('for the business this management agent is scoped to'). It clearly distinguishes from list_notifications, which lists notifications rather than mutating one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies the context for use—marking a single owner notification as read within the agent's business scope—and states a required condition (allowed_actions must include mark_notification_read). It doesn't explicitly contrast with alternatives, but no sibling tool performs the same action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_businessesRecommend BusinessesARead-onlyInspect
Return recommendations in explicit Verified, Listed, reviewed_registry, and fallback_registry sections. For category recommendations, Published Verified and Listed businesses come first; identity-reviewed Registry rows may fill only within the one-mile Free reach. fallback_registry may contain at most one unrated unclaimed Registry row and only when every higher-authority pool is empty. Owner-submitted and claimed-but-unpublished Registry records are never fallback results. For exact/genuine-prefix name recommendations, preserve direct-entity relevance across Published and identity-reviewed Registry rows; the Registry row has no reach_eligibility, and fallback_registry, Sponsored placement, and paid exposure are forbidden. Registry rows retain claim status and remain outside published Verified/Listed classes; the recommendation rationale is carried on the returned recommend row. Exact fallback warning: This unclaimed business has no identity-verified reviewer ratings. Loppee has not verified it; the customer should independently check the business before making contact or booking service. Local category recommendations require current precise authority or Home with kind=saved_exact; coarse context returns no local results or commercial exposure. Local category discovery and recommendations require a current precise location proof or handoff, or a saved_exact Home location. City/state, ZIP, provider IP, saved_coarse locations, and caller-supplied coordinates are neutral area context for business-name disambiguation only: they return no local category or recommendation results, cannot activate Sponsored placement, and record no impressions. Exact and genuine-prefix business-name lookup remains universal; without precise location it is commercially neutral. Sponsored share-of-voice ordering is active only within one verification class and one verified-review half-star band. Paid tier entitlement is position-weighted, every paid placement is labeled with sponsored=true, eligible Free businesses retain a 25% exposure floor, and direct entity/name lookup is exempt from rotation. Exposure-plan payment changes discovery reach and, when Sponsored ordering is active, labeled position-weighted exposure only within the same verification class and verified-review reputation band. It never changes business-profile publication, verification, review authority, reputation, moderation, class ordering, or reputation band. Loppee Jobs is a separate optional paid product; its billing affects job-posting activation only and never business verification or directory ranking.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text search across the published pool. Exact and genuine-prefix name lookup remains universal; category recommendations require precise location authority. | |
| zip | No | 5-digit US ZIP (ZIP+4 accepted). Its ZCTA centroid is neutral area context for business-name disambiguation only; it cannot enable local category/recommendation reach, Sponsored placement, or impressions. | |
| city | No | City context. With state, it can disambiguate a business name but cannot enable local category/recommendation reach, Sponsored placement, or impressions. | |
| limit | No | Maximum result count from 1 to 50. | |
| state | No | Two-letter US state or territory code. With city, this is neutral area context for business-name disambiguation; it is not precise local-discovery authority. | |
| category | No | Business category or taxonomy term. Local recommendations require a current precise proof/handoff or saved_exact authority. | |
| radius_miles | No | Requested area radius. It never substitutes for a current precise location proof/handoff or saved_exact authority. Universal name lookup may use it only as neutral context. | |
| allowed_action | No | Require a published allowed action such as recommend or call_business. | |
| location_selection | No | The customer's explicit location choice. Current, or Home when reach_precision=exact, can authorize local category/recommendation discovery. Provided city/ZIP and coarse Home are neutral area context for business-name disambiguation only. Ask exactly: 'Where should I search? For local categories, share your current location or use Home only when it is marked exact. Another city/ZIP is for area context or business-name lookup only.' Exact and genuine-prefix business-name lookup is exempt. | |
| saved_location_ref | No | Opaque saved-location reference returned by get_location_options. Required with location_selection=saved. Only kind=saved_exact authorizes local category/recommendation reach; coarse saved kinds remain neutral context. It contains no address, ZIP, latitude, or longitude. | |
| location_handoff_id | No | Opaque current precise-location handoff approved by the consumer. It can authorize local category/recommendation reach and Sponsored exposure. Requires the same active scoped consumer-agent key that created it. Do not combine it with lat/lng, ZIP, city, or state; Loppee uses the point privately and never returns it to the agent. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond annotations by detailing fallback rules (at most one unrated unclaimed Registry row, only when higher-authority pools are empty), sponsored exposure confidentiality, the 25% Free exposure floor, and the neutrality of city/ZIP/provider IP. It also clarifies that Loppee Jobs is a separate paid product, eliminating cross-product misconceptions. This is exemplary behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense block of many sentences, lacking bullets, sections, or subheadings. While every sentence carries meaningful rules, the wall-of-text format makes it difficult to parse quickly. Front-loading is present but quickly buried under exhaustive edge-case details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 11 parameters, an output schema, and complex behavioral rules, the description is exceptionally complete. It covers sponsored ordering, exposure floors, fallback rules, location authority tiers, and the distinction between name lookup and category discovery. The output schema handles return values, so the description appropriately focuses on operational constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes all 11 parameters with 100% coverage, so the baseline is 3. The description adds cross-parameter semantics, such as how city/state/ZIP/radius interact with location authority and how location_selection/saved_location_ref/location_handoff_id determine reach. This adds meaning beyond individual schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Return recommendations in explicit Verified, Listed, reviewed_registry, and fallback_registry sections.' This clearly distinguishes it from search/lookup tools by describing the tiered output structure. It also explains the two primary modes (category vs. name), covering the tool's full scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context on when local category recommendations are allowed (current precise location, handoff, or saved_exact Home) and that coarse context only supports business-name disambiguation. However, it does not explicitly name alternative tools like search_businesses or lookup_business, missing an opportunity to direct agents to the right sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redeem_couponRedeem CouponAIdempotentInspect
Redeem a Loppee-issued subscription coupon for a business you manage: runs the exact same validation as validate_coupon, then creates a Stripe Checkout session for the chosen paid plan WITH the discount already applied, and returns its url plus the priced breakdown (original_cents, discount_cents, final_cents) and a redemption_id. IMPORTANT: this tool never charges anyone — the business owner must open the returned url and complete payment on Stripe's hosted page; until then the redemption is 'pending' and is released automatically if the checkout expires. Redeeming counts against the code's redemption limits while pending, so do not call this speculatively — use validate_coupon to check a code. Retry-safe/idempotent for an identical pending business + code + tier + period: it returns the same redemption and live Checkout session instead of creating another. A different plan, period, or coupon is refused with billing_checkout_in_progress while the existing business Checkout remains open; no competing session is created. Requires a scoped management key whose account_id + business_id match and whose allowed_actions include redeem_coupon (owner opt-in), plus enabled online billing (billing_not_configured otherwise); call get_agent_identity first. Machine-readable failures match the owner UI exactly: coupon_not_found (invalid code), coupon_inactive, coupon_expired, coupon_wrong_plan (code is scoped to a different plan), coupon_exhausted (total redemption cap reached), coupon_customer_limit (this business already used it), coupon_requires_paid_plan, plus the standard management auth errors (missing_api_key / forbidden_account / management_rate_limited), billing_already_active, billing_checkout_in_progress, and billing_not_configured. A coupon changes the subscription PRICE only. It never changes verification class, review reputation, plan entitlement, eligibility, or quality band; completed payment grants exactly the chosen plan.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The coupon code exactly as issued by the Loppee team. Case- and whitespace-insensitive. | |
| tier | Yes | Paid exposure plan to price: nearby=Silver, local=Gold, regional=Platinum, metro=Diamond. | |
| period | No | Billing period to price the plan at. | monthly |
| account_id | Yes | The agent account id this API key belongs to (confirm with get_agent_identity). | |
| business_id | Yes | The managed business to apply the coupon for. Must be within this key's allowed_business_ids. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only indicate non-read-only, idempotent, non-destructive), the description discloses critical behaviors: it never charges, creates a pending redemption that auto-releases on expiration, counts against redemption limits while pending, is idempotent, refuses competing checkouts, and clearly states that it only changes price. This goes far beyond what annotations provide, with no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long and dense, but every sentence adds necessary context (idempotency, failure modes, side effects, prerequisites). It front-loads the core purpose and then systematically covers edge cases. While it could be broken into bullet points for easier parsing, the density is justified given the tool's complexity. It is not merely padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the presence of an output schema, and rich input schema, the description is complete: it covers the exact return values (url, price breakdown, redemption_id), all machine-readable error codes, the pending-redemption lifecycle, and the scope of effects. No important context is missing, making it highly actionable for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with descriptions for all parameters, including enums and explanations of 'tier' and 'period'. The description adds minimal extra parameter semantics, mostly reinforcing the overall behavior rather than clarifying individual parameters. It stays at the baseline since schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Redeem a Loppee-issued subscription coupon for a business you manage.' It goes on to clearly distinguish itself from the sibling validate_coupon by explaining that it validates then creates a Stripe Checkout session. This provides a precise, non-tautological purpose that is easily distinguished from all sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use and when not to use the tool: 'do not call this speculatively — use validate_coupon to check a code' and 'call get_agent_identity first.' It also outlines prerequisites (matching account_id/business_id, allowed_actions, enabled online billing) and lists the exact error conditions, giving an agent clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_customer_messageReply To Customer MessageAIdempotentInspect
Post a reply to an inbound customer message on behalf of a business you manage. Pass the interaction_id from list_customer_messages and the reply body. client_message_id is required and makes an exact retry idempotent; reuse with different content is rejected. Requires allowed_actions include reply_to_customer_message. Requires an owner-scoped management key, explicit business scope, and the tool's permission; exposure tier does not grant or remove access. Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now. The reply is stored and attributed to this agent; it does not change the verification class or review reputation.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| account_id | Yes | ||
| business_id | Yes | ||
| interaction_id | Yes | The customer message being answered (from list_customer_messages). | |
| client_message_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial context beyond the annotations: idempotency behavior (client_message_id reuse with different content rejected), permission requirements (owner-scoped key, explicit business scope, allowed_actions), and storage/attribution effects (attributed to agent, no verification class change). This is far more than the idempotentHint and readOnlyHint flags provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence contributes operational or safety-critical information (idempotency, permissions, attribution). It is front-loaded with the core action and then layers relevant details. Slightly verbose but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 required parameters, an output schema, and annotations, the description covers all critical aspects: idempotency, permissions, prerequisites, and side effects. It is complete enough for an agent to invoke the tool correctly without needing to infer hidden behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (only interaction_id has a description). The description explains interaction_id (from list_customer_messages) and client_message_id (idempotency and rejection), and implies body is the reply text. However, account_id and business_id are not explicitly described, leaving a gap in a 5-param tool. It adds meaning but does not fully compensate for low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Post a reply to an inbound customer message on behalf of a business you manage,' which is a specific verb+resource combination that clearly distinguishes this from siblings like send_message_request or respond_to_review. It also names the source of interaction_id (list_customer_messages), reinforcing the specific intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states when to use the tool (replying to an inbound customer message) and provides a prerequisite (get interaction_id from list_customer_messages). It does not explicitly exclude alternatives like send_message_request, but the context is strong enough to infer the appropriate scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_reviewReport ReviewAInspect
Report a customer review of a business you manage into Loppee's moderation queue for a claimed policy violation (spam, harassment, off_topic, fake, or other). IMPORTANT: reporting NEVER removes the review — the review stays published, moderation is HUMAN and REACTIVE, and a moderator removes a review only for a recorded policy violation, never for being negative. Do not use this tool to suppress honest criticism; use respond_to_review to answer it publicly. Filing a report never changes the verification class, review authority, the review's weighting, or recommendation order. Requires allowed_actions include report_review. Requires an owner-scoped management key, explicit business scope, and the tool's permission; exposure tier does not grant or remove access. Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now. Call get_agent_identity first. Reportability rules: only a NEGATIVE review (rating 3 stars and below) can be reported at all — a 4-5 star review returns review_report_not_negative; only ONE report may be open at a time — while a prior report is being reviewed a new one returns review_report_already_open; and a review accepts at most 3 reports in its LIFETIME — past that the call returns review_report_limit_reached. Returns review_not_found when the review does not belong to this business and invalid_report_reason for an unknown category.
| Name | Required | Description | Default |
|---|---|---|---|
| review_id | Yes | The review being reported. | |
| account_id | Yes | The managing agent's account id (from get_agent_identity). | |
| business_id | Yes | The reviewed business (must be in the key's allowed_business_ids). | |
| reason_detail | No | What specifically violates policy (up to 2000 characters). | |
| reason_category | Yes | Policy-violation category. 'The review is negative' is not a category — negative reviews are never removed for being negative. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations include readOnlyHint=false, destructiveHint=false, openWorldHint=true, the description goes far beyond them. It explicitly discloses that reporting NEVER removes the review, moderation is human and reactive, and a review is removed only for a recorded policy violation. It also states the side-effect-free nature (no change to verification, weighting, or ranking) and access requirements. This is rich behavioral context above the annotations, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is informative but quite long, with multiple sentences covering various rules and context. While most sentences add value, some tangential details (e.g., 'Under v3, a business owner connects an external agent...', 'Access is available at no charge for now') do not directly help the agent select or invoke the tool. It is not as concise as it could be; a tighter structure would be better.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers prerequisites, side effects, eligibility constraints, error conditions (e.g., review_report_not_negative, review_report_already_open, review_report_limit_reached, review_not_found), and explicitly directs the agent to get_agent_identity first. Combined with the rich input schema and presence of an output schema, the tool is fully contextualized for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% parameter coverage with descriptions. The description adds extra semantic context, such as 'The review is negative' is not a valid reason_category, and explains constraints on which reviews can be reported. This exceeds the baseline but does not deeply elaborate each parameter individually, so a 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Report a customer review of a business you manage into Loppee's moderation queue for a claimed policy violation.' It clearly lists the policy categories and explicitly differentiates from the sibling tool 'respond_to_review' by advising against suppressing honest criticism. The purpose is unambiguous and distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: use it only for policy violations, never for negative reviews; use respond_to_review for public responses. It also states prerequisite conditions (call get_agent_identity first, require allowed_actions, owner-scoped key) and eligibility rules (only ratings 3 and below, only one open report, max 3 lifetime reports). These conditions and exclusions are clearly actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_admin_review_anomalyResolve Review Anomaly FlagADestructiveInspect
Resolve or ignore one anomaly flag with a recorded reason and exact confirmation. Requires a team/admin-agent key with moderate_reviews. This changes only the flag; it cannot hide/remove the review, change review weight, or change a business class.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| confirm | Yes | ||
| flag_id | Yes | ||
| resolution_note | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true), the description adds critical context: it requires a specific permission key, modifies 'only the flag,' and explicitly lists what it does not do. This clarifies the exact blast radius of a destructive operation, which is highly valuable and goes beyond the structured annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and every sentence adds value. There is no redundancy with the schema or annotations, making it appropriately concise and well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, permission-gated tool with four required parameters and an output schema, the description fully covers the essential context: what it does, its side effects, its permissions, and its boundaries. Since an output schema exists, omitting return details is appropriate. The description is complete for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description partially compensates by mentioning 'recorded reason' (resolution_note) and 'exact confirmation' (confirm). However, it does not clarify the relationship between status and confirm (e.g., that confirm must match the chosen status), nor does it add meaning for flag_id. The schema's enums and UUID format provide some structure, but the description leaves gaps in parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb phrase 'Resolve or ignore one anomaly flag' that clearly identifies the action and resource, including the singular scope ('one'). It also distinguishes itself from review-level mutations by stating it 'cannot hide/remove the review, change review weight, or change a business class,' which differentiates it from siblings like report_review or submit_review_for_moderation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear prerequisite ('Requires a team/admin-agent key with moderate_reviews') and explicit exclusions (does not affect the underlying review). However, it does not name alternative tools or explicitly state when to prefer this over list_admin_review_anomalies or other review-related tools, leaving some usage inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
respond_to_reviewRespond To ReviewAIdempotentInspect
Publish the business's ONE public response to a customer review of a business you manage. Repeating the call EDITS the existing response in place (idempotent per review — a business never gets a second response slot). The response is public and attributed to this agent. Responding NEVER changes the verification class, review authority, the review, its rating, or its weighting — it only adds the business's side of the story under the review. Requires allowed_actions include respond_to_review. Requires an owner-scoped management key, explicit business scope, and the tool's permission; exposure tier does not grant or remove access. Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now. Call get_agent_identity first. Returns review_not_found when the review does not belong to this business, and missing_response_body when body is empty.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The public response text (up to 2000 characters, same cap as the owner dashboard). | |
| review_id | Yes | The review being answered (review ids appear in the business's review notifications and dashboard payload). | |
| account_id | Yes | The managing agent's account id (from get_agent_identity). | |
| business_id | Yes | The reviewed business (must be in the key's allowed_business_ids). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (idempotentHint, destructiveHint), the description details crucial behaviors: the response is public and attributed to the agent, it never changes verification class, review authority, rating, or weighting, and it returns specific error cases. It also explains that exposure tier does not grant/remove access, which is valuable context not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a long, single-paragraph wall of text with extraneous business context ('Under v3, a business owner connects an external agent...', 'Loppee provides scoped API and MCP access only...', 'Access is available at no charge for now.') that does not aid tool selection or invocation. Key points are buried, reducing scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite being verbose, the description is thorough: it covers auth requirements, idempotency, side-effect non-changes, error returns, and the proper call sequence. Given the output schema exists and annotations are present, the description leaves no critical operational gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are well-documented in the schema. The tool description adds little beyond that; it only ties account_id to get_agent_identity and mentions body limits already in the schema. This meets the baseline for full schema coverage but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Publish the business's ONE public response to a customer review.' It distinguishes from siblings like report_review and reply_to_customer_message by emphasizing the public, one-per-review nature and by clarifying it 'only adds the business's side of the story.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit prerequisites: requires allowed_actions contain respond_to_review, an owner-scoped management key, explicit business scope, and tool permission. It also instructs 'Call get_agent_identity first' and clarifies that repeating the call edits the existing response, preventing misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_my_keyRevoke My KeyADestructiveInspect
Immediately and irreversibly revoke the API key THIS call authenticates with — the agent-side 'delete my key' for connection hygiene (e.g. the key may be exposed, the integration is being retired, or the user asked to disconnect). Possession of the key is the authorization: it can only ever revoke itself, never another key or account, and it removes access rather than granting any. Takes effect on the next request (key validation is a live database check, so there is no cache window). The revocation is written to the audit log before the key is disabled. Requires confirm:true — without it the tool returns confirm_required and changes nothing. A new key can only be issued by the account's human owner from their Loppee dashboard (or by an admin); this tool cannot mint keys. Operator keys configured in the server environment return env_key_not_revocable. Call get_agent_identity first if you need to confirm which account and label this key belongs to.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description goes far beyond: irreversibility, self-only authorization, live DB check meaning no cache window, audit logging before disable, confirm_required without confirmation, env_key_not_revocable for operator keys, and the fact that revocation is effective on the next request. There is no contradiction between description and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph but remains front-loaded with the core action in the first sentence. Subsequent sentences deliver high-value warnings and edge cases. It is longer than typical but appropriately so for a destructive, irreversible operation with multiple behavioral caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with low parameter count but high stakes, this description covers the complete operational context: what happens on success, the required confirmation, the no-cache guarantee, audit logging, revocation limitations, operator-key exception, and the alternative tool for identity confirmation. The output schema exists, so the description focuses on using the tool correctly rather than return values, which is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The one required parameter, confirm, is a bare boolean in the schema with 0% coverage. The description fully compensates by explaining its semantic role: 'Requires confirm:true — without it the tool returns confirm_required and changes nothing.' This provides actionable meaning far beyond the schema type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific, unambiguous action: 'Immediately and irreversibly revoke the API key THIS call authenticates with.' It clearly identifies the resource (the calling key itself), the scope (self-only, never another key), and the effect (removes access). It also distinguishes itself from related tools like get_agent_identity and minting/issuing operations, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use context (key exposed, integration retired, user asked to disconnect), clear what-it-does-not-do (cannot revoke other keys, cannot mint new keys), and a direct alternative/prerequisite: 'Call get_agent_identity first if you need to confirm which account and label this key belongs to.' It also specifies the required confirm flag behavior and two possible error/return states.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_businessSave BusinessAIdempotentInspect
Attach a published business or directory listing to a customer/service-agent account workflow (a shortlist — it does not contact the business). The shortlist round-trips: read it back with list_saved_businesses and prune entries with unsave_business. Requires a valid scoped agent API key whose account_id matches the account_id argument and whose allowed_actions include save_business; call get_agent_identity first to confirm scope. Idempotent: saving the same business twice is a no-op. Saving never affects the business's verification class, review authority, review reputation, or recommendation eligibility. Returns a machine-readable auth error (missing_api_key / forbidden_account) when the key is absent or out of scope.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| notes | No | ||
| state | No | ||
| category | No | ||
| account_id | Yes | ||
| business_id | Yes | ||
| business_name | Yes | ||
| business_source | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds crucial behavioral details: it does not contact the business, it is idempotent (same business twice is a no-op), it does not affect verification or reputation scores, and it returns specific machine-readable auth errors. These are significant disclosures that the annotations do not fully capture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence captures the essence, and subsequent sentences provide necessary caveats (idempotency, side effects, auth errors) without redundancy. Every sentence adds value and the structure is logical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value documentation is unnecessary. The description covers purpose, auth prerequisites, idempotency, non-interference with business metrics, and error conditions, giving a well-rounded picture. It could mention validation or other error cases, but the existing coverage is strong for an 8-parameter mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate for parameter meanings. It does explain that account_id must match the agent key, but it does not elaborate on business_name, business_source, city, state, notes, or category. Some parameters are self-explanatory from the tool's purpose, but the description does not fully cover all 8 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Attach') and resource ('a published business or directory listing'), and clarifies it is a shortlist action that does not contact the business. It clearly distinguishes from sibling tools like list_saved_businesses and unsave_business, making the tool's place in the workflow explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it is for attaching businesses to a shortlist workflow, and it explicitly names related tools for reading and pruning. It also states the prerequisite of calling get_agent_identity first to confirm API key scope. However, it does not explicitly state when not to use this tool (e.g., if the business is not published), so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_businessesSearch BusinessesARead-onlyInspect
Search Loppee's closed taxonomy or use universal business-name lookup. A customer personal agent first calls get_location_options and asks exactly: "Where should I search? For local categories, share your current location or use Home only when it is marked exact. Another city/ZIP is for area context or business-name lookup only." Use current, or saved only when the returned kind is saved_exact, for local category discovery. Provided city/ZIP and coarse Home are name-disambiguation context only. Other personas cannot access customer location authority and therefore cannot run local category discovery. Never infer a choice or expose coordinates. Local category discovery and recommendations require a current precise location proof or handoff, or a saved_exact Home location. City/state, ZIP, provider IP, saved_coarse locations, and caller-supplied coordinates are neutral area context for business-name disambiguation only: they return no local category or recommendation results, cannot activate Sponsored placement, and record no impressions. Exact and genuine-prefix business-name lookup remains universal; without precise location it is commercially neutral. Exposure-plan payment changes discovery reach and, when Sponsored ordering is active, labeled position-weighted exposure only within the same verification class and verified-review reputation band. It never changes business-profile publication, verification, review authority, reputation, moderation, class ordering, or reputation band. Loppee Jobs is a separate optional paid product; its billing affects job-posting activation only and never business verification or directory ranking.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text search. Category terms auto-route to precise-location-gated discovery; otherwise exact and genuine-prefix business-name lookup is universal and commercially neutral without precise location. | |
| zip | No | 5-digit US ZIP (ZIP+4 accepted). Its ZCTA centroid is neutral area context for business-name disambiguation only; it cannot enable local category/recommendation reach, Sponsored placement, or impressions. | |
| city | No | City context. With state, it can disambiguate a business name but cannot enable local category/recommendation reach, Sponsored placement, or impressions. | |
| limit | No | Maximum result count from 1 to 50. | |
| state | No | Two-letter US state or territory code. With city, this is neutral area context for business-name disambiguation; it is not precise local-discovery authority. | |
| cursor | No | Opaque cursor returned in next_cursor by the previous v3 search page. Omit for the first page. | |
| intent | No | Routing hint: auto resolves taxonomy first; category and name force their respective lanes. | auto |
| category | No | Taxonomy category alias or category term. Resolved categories require current precise-location authority or saved_exact; coarse context returns no local results. | |
| radius_miles | No | Requested area radius. It never substitutes for a current precise location proof/handoff or saved_exact authority. Universal name lookup may use it only as neutral context. | |
| location_selection | No | The customer's explicit location choice. Current, or Home when reach_precision=exact, can authorize local category/recommendation discovery. Provided city/ZIP and coarse Home are neutral area context for business-name disambiguation only. Ask exactly: 'Where should I search? For local categories, share your current location or use Home only when it is marked exact. Another city/ZIP is for area context or business-name lookup only.' Exact and genuine-prefix business-name lookup is exempt. | |
| saved_location_ref | No | Opaque saved-location reference returned by get_location_options. Required with location_selection=saved. Only kind=saved_exact authorizes local category/recommendation reach; coarse saved kinds remain neutral context. It contains no address, ZIP, latitude, or longitude. | |
| location_handoff_id | No | Opaque current precise-location handoff approved by the consumer. It can authorize local category/recommendation reach and Sponsored exposure. Requires the same active scoped consumer-agent key that created it. Do not combine it with lat/lng, ZIP, city, or state; Loppee uses the point privately and never returns it to the agent. | |
| include_directory_listings | No | Include honestly labeled, unverified directory listings for discovery. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses extensive behavioral rules beyond the readOnly/destructive annotations: location authority gates category/recommendation reach, neutral context records no impressions, exposure-plan payment changes Sponsored ordering but never business-profile publication or verification, and Loppee Jobs billing is separate. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph with significant repetition (e.g., city/ZIP being neutral context and unable to enable local category reach is restated many times). While the detail is valuable, it lacks structural organization and could be made more concise with bullets or paragraph breaks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters, complex location-gating rules, and commercial neutrality requirements, the description is exceptionally complete. It covers prerequisites, persona restrictions, location selection rules, and side effects like impressions and Sponsored exposure. The output schema handles return-value documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter already has a detailed description. The tool-level description adds high-level conceptual context (closed taxonomy vs name lookup, location authority model) but does not elaborate on individual parameters beyond the schema's own semantics. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search Loppee's closed taxonomy or use universal business-name lookup.' It clearly separates two search modes and, with the sibling search_category present, distinguishes this tool by highlighting taxonomy routing and universal name lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage workflow: first call get_location_options and ask the customer a scripted question. It states when to use current/saved locations, when only saved_exact authorizes local category discovery, and that provided city/ZIP are for name disambiguation only. It also excludes other personas from local discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_categorySearch CategoryARead-onlyInspect
Local category discovery requires current or Home with kind=saved_exact. Provided city/ZIP, coarse Home, and provider IP return no results with commercial_influence=none and record no impressions. Other agent personas cannot access customer location authority and therefore cannot run this local category lane. Local category discovery and recommendations require a current precise location proof or handoff, or a saved_exact Home location. City/state, ZIP, provider IP, saved_coarse locations, and caller-supplied coordinates are neutral area context for business-name disambiguation only: they return no local category or recommendation results, cannot activate Sponsored placement, and record no impressions. Exact and genuine-prefix business-name lookup remains universal; without precise location it is commercially neutral. Exposure-plan payment changes discovery reach and, when Sponsored ordering is active, labeled position-weighted exposure only within the same verification class and verified-review reputation band. It never changes business-profile publication, verification, review authority, reputation, moderation, class ordering, or reputation band. Loppee Jobs is a separate optional paid product; its billing affects job-posting activation only and never business verification or directory ranking.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | 5-digit US ZIP (ZIP+4 accepted). Its ZCTA centroid is neutral area context for business-name disambiguation only; it cannot enable local category/recommendation reach, Sponsored placement, or impressions. | |
| city | No | City context. With state, it can disambiguate a business name but cannot enable local category/recommendation reach, Sponsored placement, or impressions. | |
| limit | No | Maximum result count from 1 to 50. | |
| state | No | Two-letter US state or territory code. With city, this is neutral area context for business-name disambiguation; it is not precise local-discovery authority. | |
| cursor | No | Opaque cursor returned in next_cursor by the previous v3 search page. Omit for the first page. | |
| category | Yes | Taxonomy category alias or natural category term. Local results require a current precise proof/handoff or saved_exact authority. | |
| radius_miles | No | Requested area radius. It never substitutes for a current precise location proof/handoff or saved_exact authority. Universal name lookup may use it only as neutral context. | |
| location_selection | No | The customer's explicit location choice. Current, or Home when reach_precision=exact, can authorize local category/recommendation discovery. Provided city/ZIP and coarse Home are neutral area context for business-name disambiguation only. Ask exactly: 'Where should I search? For local categories, share your current location or use Home only when it is marked exact. Another city/ZIP is for area context or business-name lookup only.' Exact and genuine-prefix business-name lookup is exempt. | |
| saved_location_ref | No | Opaque saved-location reference returned by get_location_options. Required with location_selection=saved. Only kind=saved_exact authorizes local category/recommendation reach; coarse saved kinds remain neutral context. It contains no address, ZIP, latitude, or longitude. | |
| location_handoff_id | No | Opaque current precise-location handoff approved by the consumer. It can authorize local category/recommendation reach and Sponsored exposure. Requires the same active scoped consumer-agent key that created it. Do not combine it with lat/lng, ZIP, city, or state; Loppee uses the point privately and never returns it to the agent. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare read-only/harmless, but the description adds extensive behavioral detail: neutral context records no impressions, sponsored placement requires precise location, exposure-plan payment never affects profiles/verification, and location handoff is used privately. These go well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that repeats the same core constraints multiple times, such as 'neutral area context for business-name disambiguation only' and the precise-location requirement. While content is valuable, the lack of structure and redundancy make it harder to parse than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (10 parameters, several location modes, commercial influence), the description is comprehensive. It covers location authority types, persona restrictions, commercial neutrality, Sponsored placement, exposure-plan effects, and privacy. An output schema exists, so return-value details are not needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed per-parameter descriptions, so baseline is 3. The description adds cross-parameter meaning by categorizing parameters into authoritative location (current, handoff, saved_exact) vs neutral context (zip, city, state, radius, coarse saved) and explaining how location_selection and saved_location_ref interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as local category discovery, contrasting it with business-name disambiguation ('Exact and genuine-prefix business-name lookup remains universal'). It specifies the required scope: current precise location or saved_exact Home for actual category results, while city/ZIP/coarse Home are only context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use/when-not-to-use guidance. It states that city/state, ZIP, provider IP, saved_coarse, and caller-supplied coordinates return no local category results and are for business-name disambiguation only. It also notes that other agent personas cannot access customer location authority and implies alternative tools via the business-name lookup exemption.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_jobsSearch JobsARead-onlyInspect
Discover active schema.org-aligned Loppee jobs from currently Verified, published employers. Every employer carries the exact v3 Verified class disclosure and no numeric verification metric. Location and job filters remain commercially neutral. Exposure-plan payment changes discovery reach and, when Sponsored ordering is active, labeled position-weighted exposure only within the same verification class and verified-review reputation band. It never changes business-profile publication, verification, review authority, reputation, moderation, class ordering, or reputation band. Loppee Jobs is a separate optional paid product; its billing affects job-posting activation only and never business verification or directory ranking.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Role/keyword search across job title, description, category, skills, experience, and location. Typo-tolerant (trigram word similarity). | |
| lat | No | Latitude for radius search (use with lng and radius_miles). | |
| lng | No | Longitude for radius search. | |
| zip | No | 5-digit US ZIP filter, matched against the posting's postal code. | |
| city | No | City filter. | |
| sort | No | Result ordering; both are commercially neutral. Default relevance (text/location fit + recency). | |
| limit | No | Maximum result count. | |
| state | No | Two-letter US state filter. | |
| job_id | No | Exact posting lookup — the id behind the /jobs/{job_id} page. | |
| offset | No | Pagination offset into the ranked result set. | |
| category | No | Field/domain filter resolved against the same closed category taxonomy as businesses (aliases + synonyms, e.g. 'hvac' or 'ac repair'); unresolvable terms fall back to free-text category matching. | |
| salary_max | No | Annualized USD salary ceiling. | |
| salary_min | No | Annualized USD salary floor (hourly salaries compare at x2080, monthly at x12). Jobs without a disclosed salary are excluded when set. | |
| radius_miles | No | Radius in miles around lat/lng. Remote roles are included regardless of distance unless include_remote=false. | |
| include_remote | No | Default true: remote roles bypass ZIP/radius location filters. Set false to exclude remote roles from located searches. | |
| workplace_type | No | Workplace type. | |
| employment_type | No | Employment type. | |
| experience_level | No | Experience-level filter (substring match, e.g. 'entry', 'senior'). | |
| posted_within_days | No | Only roles published within the last N days. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides extensive behavioral transparency beyond the readOnlyHint and destructiveHint annotations. It details that employers carry the exact v3 Verified class disclosure, that location and job filters are commercially neutral, and that exposure-plan payment changes discovery reach only in specific circumstances without affecting business-profile publication, verification, review authority, reputation, moderation, class ordering, or reputation band. This level of detail is exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph of roughly 120 words that front-loads the purpose but then spends several sentences on policy detail, including a long list of unaffected systems ('verification, review authority, reputation, moderation, class ordering, or reputation band'). This is verbose and could be condensed without losing essential meaning, making it less concise than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 19-parameter schema and existing output schema, the description effectively explains the unique behavioral context of the search: verified employers, commercial neutrality, and payment effects. It covers key constraints like 'active', 'schema.org-aligned', and 'Verified', which are critical for understanding the result set. The description is complete for the tool's search semantics and does not need to repeat parameter details covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema descriptions cover all 19 parameters with rich semantics, such as typo tolerance for q, salary conversion rules for salary_min, and remote-role behavior for radius_miles. The tool description itself adds no parameter-specific information, so the baseline of 3 is appropriate given the 100% schema coverage. The schema carries the parameter explanation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence clearly states the tool's purpose: 'Discover active schema.org-aligned Loppee jobs from currently Verified, published employers.' This uses a specific verb ('discover') and resource ('jobs'), with a clear scope that distinguishes it from business search tools. Even though the following sentences discuss commercial neutrality, the fundamental purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by defining the tool as job discovery and clarifying that it is separate from business verification or directory ranking. However, it does not explicitly state when to use this tool versus alternatives like search_businesses, nor does it provide exclusions or conditions. The neutrality context is helpful but not direct usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_message_requestSend Message RequestAIdempotentInspect
Send a message to a published business on behalf of the calling customer account. Messaging is available on every v3 exposure plan; the exposure plan does not change messaging access. The message is delivered DIRECTLY to the business owner's Loppee inbox with no human pre-moderation. The stored business name is resolved from the registry, never from target_business_name. Repeat sends to the same business append to the one ongoing conversation thread; read replies with list_my_conversations. client_message_id is required and makes an exact retry idempotent; reuse with different content is rejected. Subject is capped at 160 characters and the message at 4000. Requires a valid scoped agent API key whose account_id matches the account_id argument and whose allowed_actions include send_message_request (call get_agent_identity first). Returns a machine-readable auth error when the key is absent or out of scope. Sending a message never affects the business's verification class, ranking, or review weighting.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| subject | Yes | ||
| account_id | Yes | ||
| client_message_id | Yes | ||
| target_business_id | Yes | ||
| target_business_name | Yes | ||
| target_business_source | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses rich behavioral detail beyond annotations: direct delivery with no pre-moderation, registry resolution for business name, append-to-thread semantics, idempotency with rejection on different content reuse, character caps, auth error behavior, and no impact on ranking/verification. This aligns with annotations (readOnly=false, idempotentHint=true) and adds substantial context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence adds operational value: access guarantees, delivery behavior, naming caveat, threading, idempotency, limits, auth, and side-effect guarantees. It is front-loaded with the core purpose and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 required params, auth requirements, idempotency, messaging semantics), the description covers all critical aspects: prerequisites, delivery path, limits, errors, and consequences. An output schema exists, so return-value explanation is not required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining client_message_id's idempotency role, subject/message length limits, target_business_name's non-authoritative nature, and account_id's auth requirement. Remaining params like target_business_id and target_business_source are not individually clarified, but the major semantic gaps are covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Send a message to a published business on behalf of the calling customer account.' It clearly distinguishes from siblings like send_support_message and reply_to_customer_message by framing this as the customer-to-business outbound message action and pointing to list_my_conversations for replies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides strong context: messaging is available on all v3 plans, prerequisites include a scoped API key and matching account_id, and it advises calling get_agent_identity first. It also directs to `list_my_conversations` for reading replies. However, it does not explicitly state when NOT to use this tool versus alternatives like send_support_message or reply_to_customer_message, leaving some exclusion guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_support_messageSend Support MessageAInspect
Post a message to Loppee support on behalf of a business you manage. It appends to the business's one open support thread (reopening a resolved one), or opens a fresh ticket if none is active — the same behavior as the owner sending from the support widget. A closed ticket is never reused; a new one opens instead. The turn is stored as an owner-side message and attributed to this agent in the audit log. SCOPED to THIS business only. Requires allowed_actions include send_support_message. Requires an owner-scoped management key, explicit business scope, and the tool's permission; exposure tier does not grant or remove access. Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now. Optional subject (≤160 chars) names a new ticket; body ≤4000 chars. Support chat never affects verification class, review reputation, ranking, reach, or review weighting.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| subject | No | Subject for a NEW ticket (ignored when appending to an open one). | |
| account_id | Yes | ||
| business_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations, explaining thread semantics (reopening, never reusing closed), owner-side attribution in audit log, scoping to this business, permission requirements (allowed_actions, management key, explicit business scope), and that support chat never affects verification/reputation. No contradiction with annotations; adds substantial behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence provides necessary detail about permissions, scope, and behavior. It is front-loaded with the core action and then explains important constraints. Slightly verbose but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description covers permissions, thread behavior, scope, attribution, v3 context, and limitations. It fully orients the agent for correct invocation, and no key behavioral aspect is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema coverage, the description helps for subject and body (length limits and 'subject names a new ticket; ignored when appending'), but does not explain account_id or business_id meaning beyond implying business scope. It compensates partially but not fully for the low schema coverage, leaving account_id ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Post a message to Loppee support on behalf of a business you manage.' It distinguishes this from siblings like reply_to_customer_message and list_support_messages by specifying the support-thread context and the 'on behalf of a business' scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context on when to use: appending to an open/resolved thread or opening a new ticket, with explicit behavior about closed tickets. It does not explicitly name alternative tools to use instead, but the behavior and scope are clearly described, meeting the 'clear context, no exclusions' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_admin_business_lifecycleSuspend or Restore a BusinessADestructiveInspect
Suspend an active business from public surfaces or restore a suspended business without changing its pipeline status. Requires a team/admin-agent key with the exact publish action; suspend requires an enumerated reason and other requires detail. Archive, unarchive, and deletion are mechanically unavailable to this tool and remain human-only. Every successful transition uses the existing transactional audit path.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| business_id | Yes | ||
| reason_code | No | ||
| reason_detail | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with the destructiveHint annotation, the description adds substantial behavioral context: permission requirements, the conditional requirement for reason_code and reason_detail ('suspend requires an enumerated reason and other requires detail'), the unavailability of archive/unarchive/delete, and the use of a transactional audit path. These facts are not inferable from the annotations or schema and materially inform the agent's expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. The first sentence states the core purpose, the second covers permissions and validation requirements, and the third clarifies exclusions and audit behavior. Each sentence earns its place, and the structure front-loads the most critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (admin mutation, auth requirements, conditional parameters) and the fact that an output schema exists, the description provides solid coverage: it states the effect, prerequisites, validation rules, exclusions, and audit behavior. The only notable gap is what happens on invalid input (e.g., business not found), but this is partly covered by the output schema and is not essential for selecting/invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It explains the conditional requirement for reason_code and reason_detail ('suspend requires an enumerated reason and other requires detail'), which clarifies the enum values. However, business_id and action semantics are left implicit (though obvious from enums and title), and the exact meaning of 'other requires detail' is somewhat ambiguous. This is partial compensation, not comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific, verb-oriented statement: 'Suspend an active business from public surfaces or restore a suspended business without changing its pipeline status.' This clearly identifies the action (suspend/restore), the resource (business), and the scope (public surfaces, status unchanged). It also distinguishes this tool from sibling admin tools like set_business_hours or list_admin_businesses, and the title reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (suspend/restore a business's public presence) and explicitly distinguishes it from archive, unarchive, and deletion, which are human-only. It also notes a permission prerequisite ('requires a team/admin-agent key with the exact publish action'). However, it does not explicitly name alternative tools for the excluded operations, leaving some inference needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_business_hoursSet Business HoursAIdempotentInspect
Set (or clear) the structured operating hours for a business you manage — the same validated write the owner's dashboard hours editor performs. Supply the WHOLE document each time (idempotent replace): hours.weekly maps every weekday mon..sun to { status, ranges } where status is one of open (1-4 time ranges, split hours like a lunch break supported), closed, open_24 (open 24 hours), or appointment (by appointment only); ranges use business-local 24h "HH:MM" times with open < close (close may be "24:00" = midnight). hours.overrides is an optional list of date-specific SPECIAL/HOLIDAY schedules ({ date: "YYYY-MM-DD", label e.g. "Independence Day", status, ranges }) that REPLACE the weekly schedule on that date. Pass hours=null to clear the schedule (profile shows no hours again). The business's IANA time_zone is derived server-side from its location; the public payloads expose the schedule plus a live computed open_now status in that zone. Hours are informational display data ONLY — they never change verification class, review reputation, ranking, reach, share-of-voice, or eligibility. Requires a scoped management key (allowed_actions include update_business_profile).
| Name | Required | Description | Default |
|---|---|---|---|
| hours | Yes | The full hours document, or null to clear the stored schedule. | |
| account_id | Yes | ||
| business_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by explaining the idempotent replace semantics, the effect of passing null to clear, the server-side timezone derivation, and the explicit caveat that hours are informational only and never impact ranking/eligibility. This adds valuable behavioral context beyond the annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but dense, with the core purpose front-loaded in the first sentence. Each subsequent clause explains a necessary semantic (idempotency, statuses, overrides, clearing, timezone, informational impact, auth) without extraneous filler. Given the tool's complexity, this is appropriately sized and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all essential operational aspects: data structure, validation rules, clearing behavior, timezone computation, the public payload's open_now field, informational-only impact, and authorization requirements. Since an output schema exists, not detailing return values is acceptable. The description is comprehensive for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 33% schema description coverage, the description compensates by thoroughly explaining the `hours` parameter structure: weekly mapping, each status enum (open/closed/open_24/appointment), range constraints (1-4, HH:MM, open<close, 24:00), overrides with date/label, and the null clearing case. It also implicitly covers account_id/business_id as management identifiers, providing meaning the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: "Set (or clear) the structured operating hours for a business you manage". It further distinguishes this tool from siblings by noting it's "the same validated write the owner's dashboard hours editor performs" and by focusing exclusively on the hours document, setting it apart from general profile updates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes context by stating this is for setting/clearing structured hours and mentions the required management key. However, it does not explicitly name alternatives or when-not-to-use scenarios, so it falls short of a full 5. The lack of an alternative tool for hours makes the context sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_my_locationSet My Saved LocationAIdempotentInspect
Save or replace the calling customer's coarse service ZIP, optionally with a safe label such as Home. This coarse Home is neutral context only and cannot return local category/recommendation results, activate Sponsored placement, or record impressions. An agent cannot save raw coordinates or silently choose this location. A signed-in customer may save current precise location through Loppee's private proof flow. Confirm before saving; this never affects verification or reviews.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | Yes | Coarse US ZIP to save as neutral Home area context. It cannot enable local category/recommendation reach, Sponsored placement, or impressions. An agent cannot save raw coordinates; the signed-in customer saves current precise location through Loppee. | |
| label | No | Optional safe label, e.g. 'Home' or 'Office'. | |
| account_id | Yes | The customer account id this personal-agent key belongs to (confirm with get_agent_identity). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly=false, idempotent=true, destructive=false), the description discloses that the saved ZIP is neutral context only, cannot trigger local results, Sponsored placement, or impressions, and that it never affects verification or reviews. It also adds the requirement to confirm before saving and explains the alternative proof flow for precise coordinates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then provides necessary context and constraints across five sentences. Each sentence earns its place, though it is slightly longer than strictly needed, hence a 4 rather than 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Along with rich schema descriptions and an output schema, the description covers the tool's effect, limitations, procedural requirements, and relation to alternative flows (precise-location proof, verification/reviews). This makes it complete for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter already having detailed descriptions in the schema (e.g., zip's neutral-context limitations, account_id confirmation instruction). The tool description adds minimal new parameter-specific meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Save or replace') and identifies the resource ('calling customer's coarse service ZIP') and scope ('coarse'), distinguishing it from sibling tools like clear_my_location and get_my_location. It also clarifies the label optionality and neutral nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the tool is for saving a coarse service ZIP as neutral context and explicitly notes that an agent cannot save raw coordinates or silently choose this location, directing to Loppee's private proof flow for precise location. It does not explicitly compare with get_my_location or clear_my_location, but the context is clear enough for an agent to decide when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_review_for_moderationSubmit ReviewAIdempotentInspect
Submit or edit one first-party review for a published business or visible Registry-page business. Registry targets require customer_confirmed=true. The registered consumer account must have an active Passkey or OTP-verified phone; callers cannot choose either reviewer authority or interaction evidence. The review publishes immediately, with human policy moderation only. Verified reviewer means the registered account completed Passkey or phone verification. It does not prove a transaction or government identity.
| Name | Required | Description | Default |
|---|---|---|---|
| rating | Yes | ||
| message | Yes | ||
| subject | Yes | ||
| account_id | Yes | ||
| service_date | No | Optional real, non-future service date in YYYY-MM-DD format; empty means not provided. | |
| customer_confirmed | No | Set true to confirm you were a customer of this business. Required when the target business has not claimed its page. | |
| target_business_id | Yes | ||
| attestation_accepted | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that reviews publish immediately with human policy moderation, that callers cannot choose reviewer authority or interaction evidence, and that verified reviewer status does not prove a transaction or government identity. This adds meaningful behavior beyond the annotations (idempotent, not destructive, readOnly=false) without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is four to five sentences, front-loaded with the purpose. Each sentence provides distinct information (conditions, behavior, verification meaning), though it is slightly wordy with the final clarification. Overall, efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 params, write operation, moderation implications), the description covers eligibility, behavioral outcomes, and verification semantics. However, it omits explicit handling of attestation_accepted and does not clarify edit semantics. Output schema likely covers return values, so overall is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, with descriptions for customer_confirmed and service_date. The description adds the rule that Registry targets require customer_confirmed=true, and implies account eligibility via Passkey/phone verification. However, other required parameters (account_id, target_business_id, rating, subject, message, attestation_accepted) are not explained in the description, so it does not fully compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Submit or edit one first-party review for a published business or visible Registry-page business.' This clearly identifies the action (submit/edit), resource (first-party review), and scope (published business or visible Registry-page), distinguishing it from sibling tools like report_review and respond_to_review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: Registry targets require customer_confirmed=true, and the registered account must have active Passkey or OTP verification. However, it does not explicitly name alternative tools for reviewing or moderation, such as respond_to_review or report_review, so guidance is not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triage_admin_business_claimTriage Business ClaimADestructiveInspect
Reject a business claim or request more evidence. Requires a team/admin-agent key with review_intake, a non-empty reason, and the exact decision-matched confirmation phrase; it retains the existing audit and notification flow. Ownership approval is intentionally absent: only a freshly stepped-up human admin with verify_evidence can approve and grant ownership.
| Name | Required | Description | Default |
|---|---|---|---|
| claim_id | Yes | ||
| decision | Yes | ||
| confirmation | Yes | ||
| review_notes | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing the required permission (review_intake), the need for a decision-matched confirmation phrase, the retention of audit/notification flow, and the explicitly absent ownership approval capability. This provides meaningful behavioral context that annotations alone cannot convey, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and every clause adds a critical constraint or context. There is no filler or redundancy, making it concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with four required parameters, the description covers the prerequisites, the action, and the major constraints (permissions, confirmation phrase, no approval). It also mentions the audit/notification flow, and an output schema handles return values. It could be slightly more explicit about the direct consequences of rejecting versus requesting evidence, but the current coverage is solid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. It explains that 'review_notes' must be non-empty and that 'confirmation' must be the 'exact decision-matched confirmation phrase,' which adds meaning beyond the schema's enum values. However, it leaves claim_id and the decision enum values underexplained, relying on obvious inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Reject a business claim or request more evidence.' This uses a specific verb and resource, immediately distinguishing it from siblings like list_admin_business_claims (which lists claims) and decide_admin_manual_verification_submission (which handles manual verification decisions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides essential usage context: requires a team/admin-agent key with review_intake, a non-empty reason, and an exact confirmation phrase. It also clarifies that ownership approval is intentionally absent, implying this tool is not for granting ownership. However, it does not name specific alternative tools for when a different action is needed, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unsave_businessUnsave BusinessAIdempotentInspect
Remove one business from the calling account's OWN saved-business shortlist — the prune half of save_business. Idempotent: unsaving a business that is not on the shortlist is a no-op that returns removed=false, never an error. This only edits the account's own shortlist; it does not contact the business and never affects the business's verification class, review authority, review reputation, or recommendation eligibility. Requires a valid scoped agent API key whose account_id matches the account_id argument and whose allowed_actions include unsave_business (keys scoped to save_business may also unsave; call get_agent_identity first). Returns a machine-readable auth error (invalid_agent_api_key / agent_account_scope_violation) when the key is absent or out of scope.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | The customer/service-agent account id this key belongs to (confirm with get_agent_identity). | |
| business_id | Yes | The saved business to remove from the shortlist. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations by detailing idempotency (no-op with removed=false), the exact scope of side effects (does not affect verification, reviews, etc.), and specific auth error returns. The description enriches the idempotentHint and readOnlyHint=false annotations with concrete outcomes. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although the description is long, every sentence serves a distinct purpose: idempotency, side-effect guarantees, auth requirements, and error behavior. Information is front-loaded with the primary action, and the structure is logical. Efficiency is appropriate for a tool with these preconditions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, safe usage, error responses, and side-effect scope, making it self-contained even with annotations present. It clearly distinguishes from siblings like save_business and list_saved_businesses. Given the output schema exists, the description properly leaves return format to schema while noting the idempotent response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers both parameters with descriptions. The description adds meaning by linking account_id to the API key scope and confirming account_id must match the key's account. This reinforces the schema's 'confirm with get_agent_identity' note, providing extra context for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action: remove one business from the calling account's own shortlist. It explicitly names it as the 'prune half of save_business,' distinguishing it from the sibling save_business tool. The verb 'remove' is specific and the resource is precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context: only affects the account's own shortlist, never contacts the business, and does not affect broader business attributes. It also specifies authentication prerequisites (api key scope, account_id match) and suggests calling get_agent_identity first. This gives clear when-to-use and crucial constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_business_photosUpdate Business PhotosADestructiveInspect
Add or remove branding media for a business you manage — all three kinds: kind=business_photo (default) is the plan-neutral GALLERY: operation=add uploads one image (JPEG/PNG/WebP base64, up to 8MB) that enters the media review queue before appearing publicly. kind=logo and kind=cover_photo are REPLACE-IN-PLACE SINGLETONS that follow the owner-dashboard path exactly: JPEG/PNG/WebP/SVG up to 5MB, SVG is sanitized on upload, the new file replaces the prior one and is published immediately (moderation is reactive, same as owner uploads). operation=remove deletes any branding photo by asset_id (verification evidence files are never reachable here). Photos never change verification class, review authority, or recommendation order. Requires allowed_actions include update_business_photos. Requires an owner-scoped management key, explicit business scope, and the tool's permission; exposure tier does not grant or remove access. Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Branding kind for add (default business_photo = gallery). logo/cover_photo replace the current one in place. | |
| asset_id | No | Required for remove. | |
| file_name | No | Required for add. | |
| operation | Yes | ||
| account_id | Yes | ||
| size_bytes | No | Byte length of the decoded image, required for add. | |
| business_id | Yes | ||
| data_base64 | No | Base64-encoded image bytes, required for add. | |
| content_type | No | Image MIME type, required for add. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and non-read-only behavior, and the description greatly expands on this with essential details: gallery uploads enter a review queue, logo/cover_photo replace in place and publish immediately, SVG is sanitized, removal deletes by asset_id, and photos never affect verification or ranking. This goes far beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well organized, front-loading the core action and then detailing kind-specific behavior. Some context (Loppee, no-charge access) is peripheral and could be trimmed, but most sentences earn their place given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key behavioral contexts: moderation, publishing, file constraints, permissions, and exclusions. Given the output schema exists, return value documentation is unnecessary, and the description provides a complete operational picture for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 67% of parameters, but the description compensates fully by explaining kind semantics, size limits, MIME types, base64 encoding, operation requirements, and the distinction between add/remove. It adds crucial meaning (e.g., logo/cover_photo are singletons, data_base64 is required for add) that the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Add or remove branding media for a business you manage.' It clearly enumerates the three kinds (gallery, logo, cover_photo) and their distinct behaviors, which differentiates it from sibling tools like update_business_profile or manage_business_deal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when managing a business's branding photos, with explicit prerequisites (allowed_actions, owner-scoped key, business scope). It does not name alternative tools for when not to use it, but it does exclude cases like verification evidence files, so the guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_business_profileUpdate Business ProfileAIdempotentInspect
Update editable profile fields for a business you manage: display_name, category, website, phone, city, state, zip. Provide only the fields you want to change; any supplied field replaces/overwrites the current stored value, and repeating the same payload is idempotent. Changing category REQUIRES category_aliases: 1-3 exact taxonomy leaf aliases (discover them via GET /v1/taxonomy/suggest?q=...) — they set the business's authoritative category placement in search. IMPORTANT: an agent may ESTABLISH a business's category (when it has none) and CORRECT it (prune/reorder/replace within the same number of lines), but it may NOT GROW an existing set by adding a brand-new line of business — that is a regulated action requiring an owner license + admin approval (403 category_addition_requires_approval), and the owner must submit it from the owner portal (Lines of business → Request to add a line of business). Requires allowed_actions include update_business_profile. Requires an owner-scoped management key, explicit business scope, and the tool's permission; exposure tier does not grant or remove access. Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now. Cannot edit legal name, verification evidence, billing, publish state, or the verification class.
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ||
| city | No | ||
| phone | No | ||
| state | No | ||
| website | No | ||
| category | No | ||
| account_id | Yes | ||
| business_id | Yes | ||
| display_name | No | ||
| category_aliases | No | Exact taxonomy leaf aliases (1-3) for the business, e.g. home_property.trades.hvac_services. Required when category is supplied. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds rich behavioral detail: overwriting semantics, idempotence, category alias requirements, the regulated restriction on growing category lines, permission requirements, and non-editable fields. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is informative but overly long, with extraneous context about external agents and Loppee pricing that does not aid tool invocation. It is front-loaded with the purpose, but several sentences could be removed without losing essential usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex permissioned write tool, the description covers all critical aspects: mutable fields, authorization prerequisites, idempotence, category restrictions, regulated actions, and non-editable fields. The presence of an output schema means return-value details are not needed here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 10% schema description coverage, the description compensates by listing editable fields and explaining the overwrite behavior and the conditional requirement for category_aliases. It does not detail formats or constraints for string parameters like phone or zip, so a perfect score is not warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Update editable profile fields for a business you manage', and enumerates the exact fields. It clearly distinguishes itself from sibling tools like update_business_photos or set_business_hours.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use the tool (update profile fields), which fields are editable, and explicitly lists non-editable fields (legal name, verification evidence, billing, etc.). It does not name alternative sibling tools, but the context and exclusions are clear enough to guide tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_job_application_statusUpdate Job Application Status (Employer)AIdempotentInspect
Set the employer-side status of one application to a job posting of a business you manage: submitted, viewed, shortlisted, rejected, or hired. Applicants alone may withdraw — passing 'withdrawn' is rejected (invalid_job_application_status). Idempotent per (application, status): re-setting the same status is a no-op overwrite. The change is visible to the seeker in their applications view and is audit-logged with this agent's attribution. Status changes never affect the business's verification class, recommendation order, or the applicant's account. Requires allowed_actions include update_job_application_status — an explicit owner grant, never default. Requires an owner-scoped management key, explicit business scope, and the tool's permission; exposure tier does not grant or remove access. Under v3, a business owner connects an external agent they already use. Loppee provides scoped API and MCP access only; it does not provide or host that customer-connected agent. Access is available at no charge for now. Returns job_application_not_found when the application does not belong to this business's postings.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Employer-set status. Applicants alone may withdraw — 'withdrawn' is rejected here. | |
| account_id | Yes | The managing agent's account id (from get_agent_identity). | |
| business_id | Yes | The employer business (must be in the key's allowed_business_ids). | |
| application_id | Yes | The application to update (from list_job_applications). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the hints (idempotent, read-only=false, destructive=false), the description adds that re-setting the same status is a no-op overwrite, changes are visible to the seeker and audit-logged, status changes never affect verification/recommendation/account, and the tool requires explicit owner grants that exposure tier does not bestow. It also specifies the not-found error condition. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main purpose and key exclusions are front-loaded, and the structure is logical, but sentences about Loppee's hosting model and 'no charge' access are tangential to invoking the tool and add minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the full lifecycle concerns for a mutating tool: allowed values, invalid values, idempotency, side effects, audit, permission model, and error behavior. Paired with a complete schema and output schema, there are no significant gaps for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already describes all four parameters and the status enum, the description supplements this with business-scope context ('business you manage', 'belongs to this business's postings') and permission constraints tied to account/business IDs. This adds meaning beyond the schema fields, so it earns slightly above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Set') and resource ('employer-side status of one application'), enumerates the five allowed statuses, and explicitly distinguishes this from applicant withdrawal, making it clearly different from sibling tools like withdraw_job_application.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states that 'withdrawn' is rejected and only applicants may withdraw, effectively defining when not to use this tool. It also lists prerequisites (allowed_actions, owner-scoped management key, explicit business scope) and the idempotent overwrite behavior, giving clear context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_couponValidate CouponARead-onlyInspect
Check a Loppee-issued subscription coupon code against a business you manage and a chosen paid exposure plan, and return the priced result: original_cents, discount_cents, final_cents, plan_name, and whether the discount repeats (duration: once = first payment, forever = every renewal). Read-only — nothing is redeemed, reserved, or counted against the code's limits. Requires a scoped management key whose account_id + business_id match and whose allowed_actions include validate_coupon; call get_agent_identity first. Coupons are issued by Loppee admins to discount the plan PRICE (this is NOT the business's own customer-facing deals — see manage_deal for those). Machine-readable failures match the owner UI exactly: coupon_not_found (invalid code), coupon_inactive, coupon_expired, coupon_wrong_plan (code is scoped to a different plan), coupon_exhausted (total redemption cap reached), coupon_customer_limit (this business already used it), coupon_requires_paid_plan, plus the standard management auth errors (missing_api_key / forbidden_account / management_rate_limited), billing_already_active, billing_checkout_in_progress, and billing_not_configured. A coupon changes the subscription PRICE only. It never changes verification class, review reputation, plan entitlement, eligibility, or quality band; completed payment grants exactly the chosen plan.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The coupon code exactly as issued by the Loppee team. Case- and whitespace-insensitive. | |
| tier | Yes | Paid exposure plan to price: nearby=Silver, local=Gold, regional=Platinum, metro=Diamond. | |
| period | No | Billing period to price the plan at. | monthly |
| account_id | Yes | The agent account id this API key belongs to (confirm with get_agent_identity). | |
| business_id | Yes | The managed business to apply the coupon for. Must be within this key's allowed_business_ids. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses that the tool does not affect code limits, gives authentication requirements, and enumerates machine-readable error codes. This is significant behavioral context not captured by annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is thorough but appropriately sized for a tool with 5 parameters and important distinctions. It is front-loaded with purpose and behavior, then details errors and clarifications. A slight deduction for density: it could be tightened without losing critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values are covered externally. The description fully covers purpose, usage context, auth prerequisites, behavioral nuances, error scenarios, and exclusions, making it complete for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter, so the description is not required to add much. The description reinforces the tier-to-plan mapping and code semantics, but does not go beyond what the schema already provides, landing at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Check') and resource ('a Loppee-issued subscription coupon code against a business you manage and a chosen paid exposure plan'), and clearly distinguishes from sibling tools like redeem_coupon and manage_deal. It also specifies what the tool returns, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says this is read-only and 'nothing is redeemed, reserved, or counted against the code's limits,' and notes that it is NOT for customer-facing deals, pointing to manage_deal. It also instructs to call get_agent_identity first, providing clear when-to-use and exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
withdraw_job_applicationWithdraw Job ApplicationAIdempotentInspect
Withdraw one of the calling customer account's OWN job applications. The application row is kept and flipped to status=withdrawn (the employer sees an honest withdrawn status; nothing is deleted), and the seeker can re-apply later, which reactivates the same application. Idempotent: withdrawing an already-withdrawn application succeeds and reports already_withdrawn=true — never an error. Only the applicant's own application changes; withdrawing never affects the employer's verification class, review authority, review reputation, or recommendation eligibility. Requires a customer personal agent key whose account_id matches the account_id argument (apply_to_job-scoped keys may also withdraw; call get_agent_identity first). Returns job_application_not_found when the application does not belong to this account.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | The customer account id this personal-agent key belongs to (confirm with get_agent_identity). | |
| application_id | Yes | The application to withdraw (from list_my_job_applications or apply_to_job). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | No | |
| error | No | |
| contract_version | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already providing idempotentHint, readOnlyHint, and destructiveHint, the description adds critical behavioral details: the row is kept and status set to 'withdrawn', nothing is deleted, re-applying reactivates the same application, idempotency behavior (already_withdrawn=true), and no side effects on employer verification or reputation. Auth requirements are also clarified. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense paragraph that is front-loaded with the core action and then elaborates with necessary behavioral details. Every sentence contributes unique value—purpose, idempotency, scope, auth, and error condition—without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all essential contexts: what happens to the row, idempotency, auth requirements, scope restrictions, and the expected error case (job_application_not_found). With an output schema available, return value details are not the description's burden, making this description highly complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes both parameters (100% coverage), but the description adds meaningful context: account_id must match the key's account (confirm with get_agent_identity), and application_id should come from list_my_job_applications or apply_to_job. This goes beyond the schema's field descriptions, earning a score above the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: withdrawing one of the calling customer account's own job applications. It uses a specific verb ('withdraw') and resource ('job application'), and distinguishes this from siblings like list_job_applications or update_job_application_status by emphasizing the 'own application' scope and the specific status transition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear contexts: it is for withdrawing applications, requires a customer personal agent key with matching account_id, and mentions that apply_to_job-scoped keys may also withdraw. It advises calling get_agent_identity first. However, it does not explicitly name alternatives or exclusions (e.g., 'for other status changes, use update_job_application_status'), so it stops short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- MIT
- Alicense-qualityDmaintenanceAgent network intelligence for trust verification, broker discovery, and capability matching. Ed25519 identity, graph-based trust scoring, USDC payments, and MCP tools for agent registration, search, and trust attestation.1,1645MIT
- Alicense-quality-maintenanceProvides AI agents with trust scoring and reputation management capabilities for secure interactions. Enables agents to check trust scores, rate interactions, and manage disputes before transacting with other agents.
- Alicense-qualityDmaintenanceTrust and reputation system for AI agents, enabling tracking, verifying, and building trust through scores, interactions, ratings, and reports.MIT