Loppee
REMOTE · LOPPEE.COM · SCANNED AUG 3
Agent-first US business trust registry with neutral Trust Cards and local search.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (set_admin_business_lifecycle). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability53
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (poor).Fail
- Context-footprint check failed: tool/resource definitions use about 14083 tokens (~234/item across 60 items; 58 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management26
- Stability check failed: schema churn in the 8 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 1 additions. See how to fix → Fail
Tool Coverage87
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 53% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · loppee.com
claude mcp add --transport http com-loppee-loppee https://loppee.com/mcp
[mcp_servers.com-loppee-loppee] url = "https://loppee.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-loppee-loppee": {
"type": "remote",
"url": "https://loppee.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-loppee-loppee --url https://loppee.com/mcp --transport streamable-http
mcp_servers:
com-loppee-loppee:
url: "https://loppee.com/mcp" {
"mcpServers": {
"com-loppee-loppee": {
"type": "http",
"url": "https://loppee.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “lookup_business” rewrote its description, which is the text the model reads security
- Tool “recommend_businesses” rewrote its description, which is the text the model reads security
- Tool “submit_review_for_moderation” rewrote its description, which is the text the model reads security
- Tool “compare_businesses” rewrote its description, which is the text the model reads security
- Tool “decide_admin_manual_verification_submission” rewrote its description, which is the text the model reads security
- Tool “explain_recommendation” rewrote its description, which is the text the model reads security
- Tool “get_business_reviews” rewrote its description, which is the text the model reads security
- Tool “get_trust_card” rewrote its description, which is the text the model reads security
- “submit_review_for_moderation” added an optional parameter “customer_confirmed” cosmetic
- “decide_admin_manual_verification_submission” added an optional parameter “owner_reason_code” cosmetic
- “decide_admin_manual_verification_submission” reworded the description of “source_authority” cosmetic
- “decide_admin_manual_verification_submission” reworded the description of “source_url” cosmetic
- 31 Jul 26 +3
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 +1
- Stability: 0.03 → fail ▼ security
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 57
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://loppee.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=loppee.com | CN=WE1,O=Google Trust Services,C=US | 30 Jun 2026 | 28 Sept 2026 | ECDSA 256 | ECDSA-SHA256 | 7f361399b02e7c1813aac560f5767068 |
| SANs: loppee.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
DNSSEC insecure
Validation of loppee.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| loppee.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'self'; img-src 'self' https: data:; font-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' https://js.stripe.com; connect-src 'self' https://loppee.com https://loppee.com https://*.supabase.co wss://*.supabase.co https://api.stripe.com; frame-src 'self' https://js.stripe.com https://hooks.stripe.com; form-action 'self' |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | accelerometer=(), autoplay=(), camera=(), geolocation=(self), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=() |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://loppee.com/mcp | Verified | 200 | |
| http (plaintext) | http://loppee.com/mcp | HTTPS enforced | 301 | https://loppee.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
search_category Search Category ~705
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 | Type | Req | Description |
|---|---|---|---|
| category | string | yes | Taxonomy category alias or natural category term. Local results require a current precise proof/handoff or saved_exact authority. |
| city | string | — | City context. With state, it can disambiguate a business name but cannot enable local category/recommendation reach, Sponsored placement, or impressions. |
| cursor | string | — | Opaque cursor returned in next_cursor by the previous v3 search page. Omit for the first page. |
| limit | integer | — | Maximum result count from 1 to 50. |
| location_handoff_id | string | — | 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… |
| location_selection | string | — | 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… |
| radius_miles | number | — | 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. |
| saved_location_ref | string | — | 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 rema… |
| state | string | — | 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. |
| zip | string | — | 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 impress… |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
search_jobs Search Jobs ~523
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 | Type | Req | Description |
|---|---|---|---|
| category | string | — | 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. |
| city | string | — | City filter. |
| employment_type | string | — | Employment type. |
| experience_level | string | — | Experience-level filter (substring match, e.g. 'entry', 'senior'). |
| include_remote | boolean | — | Default true: remote roles bypass ZIP/radius location filters. Set false to exclude remote roles from located searches. |
| job_id | string | — | Exact posting lookup — the id behind the /jobs/{job_id} page. |
| lat | number | — | Latitude for radius search (use with lng and radius_miles). |
| limit | integer | — | Maximum result count. |
| lng | number | — | Longitude for radius search. |
| offset | integer | — | Pagination offset into the ranked result set. |
| posted_within_days | integer | — | Only roles published within the last N days. |
| q | string | — | Role/keyword search across job title, description, category, skills, experience, and location. Typo-tolerant (trigram word similarity). |
| radius_miles | number | — | Radius in miles around lat/lng. Remote roles are included regardless of distance unless include_remote=false. |
| salary_max | number | — | Annualized USD salary ceiling. |
| salary_min | number | — | Annualized USD salary floor (hourly salaries compare at x2080, monthly at x12). Jobs without a disclosed salary are excluded when set. |
| sort | string | — | Result ordering; both are commercially neutral. Default relevance (text/location fit + recency). |
| state | string | — | Two-letter US state filter. |
| workplace_type | string | — | Workplace type. |
| zip | string | — | 5-digit US ZIP filter, matched against the posting's postal code. |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
send_message_request Send Message Request ~259
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 | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | — |
| client_message_id | string | yes | — |
| message | string | yes | — |
| subject | string | yes | — |
| target_business_id | string | yes | — |
| target_business_name | string | yes | — |
| target_business_source | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
send_support_message Send Support Message ~264
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 | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | — |
| body | string | yes | — |
| business_id | string | yes | — |
| subject | string | — | Subject for a NEW ticket (ignored when appending to an open one). |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
set_admin_business_lifecycle Suspend or Restore a Business ~111
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 | Type | Req | Description |
|---|---|---|---|
| action | string | yes | — |
| business_id | string | yes | — |
| reason_code | string | — | — |
| reason_detail | string | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
set_business_hours Set Business Hours ~299
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 | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | — |
| business_id | string | yes | — |
| hours | — | yes | The full hours document, or null to clear the stored schedule. |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
set_my_location Set My Saved Location ~190
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 | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | The customer account id this personal-agent key belongs to (confirm with get_agent_identity). |
| label | string | — | Optional safe label, e.g. 'Home' or 'Office'. |
| zip | string | 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 cust… |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
submit_review_for_moderation Submit Review ~200
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 | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | — |
| attestation_accepted | boolean | yes | — |
| customer_confirmed | boolean | — | Set true to confirm you were a customer of this business. Required when the target business has not claimed its page. |
| message | string | yes | — |
| rating | integer | yes | — |
| service_date | — | — | Optional real, non-future service date in YYYY-MM-DD format; empty means not provided. |
| subject | string | yes | — |
| target_business_id | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | — | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
triage_admin_business_claim Triage Business Claim ~107
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 | Type | Req | Description |
|---|---|---|---|
| claim_id | string | yes | — |
| confirmation | string | yes | — |
| decision | string | yes | — |
| review_notes | string | yes | — |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
unsave_business Unsave Business ~198
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 | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | The customer/service-agent account id this key belongs to (confirm with get_agent_identity). |
| business_id | string | yes | The saved business to remove from the shortlist. |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
update_business_photos Update Business Photos ~374
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 | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | — |
| asset_id | string | — | Required for remove. |
| business_id | string | yes | — |
| content_type | string | — | Image MIME type, required for add. |
| data_base64 | string | — | Base64-encoded image bytes, required for add. |
| file_name | string | — | Required for add. |
| kind | string | — | Branding kind for add (default business_photo = gallery). logo/cover_photo replace the current one in place. |
| operation | string | yes | — |
| size_bytes | integer | — | Byte length of the decoded image, required for add. |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | — | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
update_business_profile Update Business Profile ~410
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 | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | — |
| business_id | string | yes | — |
| category | string | — | — |
| category_aliases | array | — | Exact taxonomy leaf aliases (1-3) for the business, e.g. home_property.trades.hvac_services. Required when category is supplied. |
| city | string | — | — |
| display_name | string | — | — |
| phone | string | — | — |
| state | string | — | — |
| website | string | — | — |
| zip | string | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
update_job_application_status Update Job Application Status (Employer) ~305
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 | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | The managing agent's account id (from get_agent_identity). |
| application_id | string | yes | The application to update (from list_job_applications). |
| business_id | string | yes | The employer business (must be in the key's allowed_business_ids). |
| status | string | yes | Employer-set status. Applicants alone may withdraw — 'withdrawn' is rejected here. |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
validate_coupon Validate Coupon ~388
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 | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | The agent account id this API key belongs to (confirm with get_agent_identity). |
| business_id | string | yes | The managed business to apply the coupon for. Must be within this key's allowed_business_ids. |
| code | string | yes | The coupon code exactly as issued by the Loppee team. Case- and whitespace-insensitive. |
| period | string | — | Billing period to price the plan at. |
| tier | string | yes | Paid exposure plan to price: nearby=Silver, local=Gold, regional=Platinum, metro=Diamond. |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.
withdraw_job_application Withdraw Job Application ~207
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 | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | The customer account id this personal-agent key belongs to (confirm with get_agent_identity). |
| application_id | string | yes | The application to withdraw (from list_my_job_applications or apply_to_job). |
| Name | Type | Req | Description |
|---|---|---|---|
| contract_version | string | yes | — |
| data | object | — | — |
| error | object | — | — |
| ok | boolean | yes | — |
No examples provided.