{"serverId":"mcp-registry/io.github.maxioos/agentport-discovery","tools":[{"name":"business.get","fixed":{"name":"business_get","description":"Inspection step: resolve one discovered business by its stable AgentPort registry slug and inspect its exact published capability/action keys. For actionable requests, this is not final resolution; call capability.resolve after the relevant canonical keys are known.","inputSchema":{"type":"object","required":["slug"],"properties":{"slug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]+$","maxLength":96,"minLength":2}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"title":"Get an AgentPort business"},"changes":[{"kind":"name","detail":"Renamed \"business.get\" → \"business_get\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":136,"tokensAfter":136},{"name":"business.search","fixed":{"name":"business_search","description":"Find real businesses with published AgentPorts by natural-language need, location, and optional exact capability keys.","inputSchema":{"type":"object","properties":{"city":{"type":"string","maxLength":120},"limit":{"type":"integer","default":10,"maximum":50,"minimum":1},"query":{"type":"string","maxLength":500,"description":"Natural-language business need, for example \"collision repair that can book an appointment\"."},"region":{"type":"string","maxLength":120,"description":"State, province, or region code/name."},"latitude":{"type":"number","maximum":90,"minimum":-90},"radiusKm":{"type":"number","maximum":1000,"exclusiveMinimum":0},"longitude":{"type":"number","maximum":180,"minimum":-180},"countryCode":{"type":"string","pattern":"^[A-Za-z]{2}$","maxLength":2,"minLength":2},"capabilities":{"type":"array","items":{"type":"string","maxLength":96,"minLength":1},"maxItems":20,"description":"Optional exact AgentPort capability keys that every result must expose."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"title":"Search AgentPort businesses"},"changes":[{"kind":"name","detail":"Renamed \"business.search\" → \"business_search\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":292,"tokensAfter":292},{"name":"capability.resolve","fixed":{"name":"capability_resolve","description":"Final discovery step for actionable goals: resolve a structured user goal to ranked machine-capable resources and provider-owned execution paths without executing the selected action. Use this after business.search/business.get whenever the user asks whether a provider can expose a machine-capable action or execution path. Any requiredCapabilities/preferredCapabilities/desiredActions/preferredActions values must be exact canonical AgentPort keys already published by a provider; never invent keys","inputSchema":{"type":"object","required":["intent"],"properties":{"intent":{"type":"string","maxLength":512,"minLength":1},"location":{"type":"object","properties":{"city":{"type":"string","maxLength":160},"near":{"type":"string","maxLength":160},"region":{"type":"string","maxLength":160,"description":"Region must match provider-published geography when used as a hard location requirement (for example WA rather than an invented synonym)."},"latitude":{"type":"number","maximum":90,"minimum":-90},"radiusKm":{"type":"number","maximum":1000,"exclusiveMinimum":0},"longitude":{"type":"number","maximum":180,"minimum":-180},"postalCode":{"type":"string","maxLength":160},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"}},"additionalProperties":false},"constraints":{"type":"object"},"preferences":{"type":"object"},"schemaVersion":{"enum":["1.0"],"type":"string"},"desiredActions":{"type":"array","items":{"type":"string","maxLength":128},"maxItems":16,"description":"Exact canonical AgentPort action keys already published by a provider (for example appointment.get_availability or appointment.create). Never invent or infer keys; discover them with business.search/business.get first when unknown."},"desiredOutcome":{"type":"string","maxLength":128,"minLength":1},"preferredActions":{"type":"array","items":{"type":"string","maxLength":128},"maxItems":16,"description":"Exact canonical AgentPort action keys already published by a provider. Never invent or infer keys."},"executionRequired":{"type":"boolean"},"requiredCapabilities":{"type":"array","items":{"type":"string","maxLength":128},"maxItems":16,"description":"Exact canonical AgentPort capability keys already published by a provider. Never invent or infer keys; discover them with business.search/business.get first when unknown."},"preferredCapabilities":{"type":"array","items":{"type":"string","maxLength":128},"maxItems":16,"description":"Exact canonical AgentPort capability keys already published by a provider. Never invent or infer keys."}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"title":"Resolve an executable capability"},"changes":[{"kind":"name","detail":"Renamed \"capability.resolve\" → \"capability_resolve\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":722,"tokensAfter":722}],"toolsChanged":3,"tokensSaved":0,"todo":[{"tool":"business_get","params":["slug"]},{"tool":"business_search","params":["city","limit","latitude","radiusKm","longitude","countryCode"]},{"tool":"capability_resolve","params":["intent","location","constraints","preferences","schemaVersion","desiredOutcome","executionRequired"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}