{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_pqwtkez8j76v","handle":"hodds","url":"https://wellknown.network/agents/hodds","links":{"self":"https://wellknown.network/agents/hodds/record.json","html":"https://wellknown.network/agents/hodds","markdown":"https://wellknown.network/agents/hodds/record.md","api":"https://wellknown.network/api/v1/agents/hodds","status":"https://wellknown.network/api/v1/agents/hodds/status","claim":"https://wellknown.network/agents/hodds/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/hodds/claim.json","badge":"https://wellknown.network/agents/hodds/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/hodds/history","tools":"https://wellknown.network/api/v1/agents/hodds/tools"},"ard":{"identifier":"urn:air:hodds.ai:server:hodds","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"HODDS","summary":"Find software, SaaS and APIs for a need in a sourced catalogue organised by business process.","description":"Find software, SaaS and APIs for a need in a sourced catalogue organised by business process.","publisher":{"name":"hodds.ai","url":"https://hodds.ai"},"homepage":"https://hodds.ai/connect/","repository":null,"version":"0.4.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://hodds.ai/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"ard":{"type":"application/mcp-server-card+json","metadata":null,"identifier":"urn:air:hodds.ai:mcp:hodds","artifactUrl":"https://hodds.ai/mcp/server-card","representativeQueries":[]},"updatedAt":"2026-10-26T06:55:33.557897Z","publishedAt":"2026-10-26T06:55:33.557897Z","registryName":"ai.hodds/hodds"},"attribution":{"kind":"ard_catalog","name":"ard_catalog","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"ard_catalog","publisherUrl":"ard_catalog","publisherName":"ard_catalog"}},"derived":{"capabilities":[{"slug":"commerce.payments","name":"Payments","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.583,"provenance":"derived"},{"slug":"documents.contracts","name":"Contracts & Legal","confidence":0.525,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"},{"slug":"documents.invoice-processing","name":"Invoice Processing","confidence":0.51,"provenance":"derived"}],"categories":["commerce","content","documents","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 46m ago.","lastOkAt":"2026-10-31T15:27:09.146Z","lastProbedAt":"2026-10-31T15:27:09.146Z","statusComputedAt":"2026-10-31T15:31:31.466Z","reliability30d":{"probes":12,"successRate":1,"p50Ms":751,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":12,"ok":12,"authBoundaryOk":0,"serviceOk":12,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-31T15:27:09.146Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":759,"error":null,"detail":{"tools":[{"name":"search_solutions","description":"Searches the HODDS catalogue of software, SaaS, APIs and online services, organised by business process, for records that match a need written in English or Fre"},{"name":"get_solution","description":"Returns one HODDS catalogue record by id (an option id returned by search_solutions): name, homepage, summary in English and French, processes (the first is pri"},{"name":"list_processes","description":"Returns the HODDS process taxonomy: groups (for example \"Run the business\") and processes (for example \"invoice-and-get-paid\"), with English and French labels a"},{"name":"send_feedback","description":"Stores a declarative outcome report for an option returned by search_solutions: outcome YES (the option met the need), PARTLY or NO, with the request_id and the"},{"name":"watch_need","description":"Watches a need; CATEGORY follows a process. Optional target selects one product and capability_ids (empty = whole product), counted once. Targeted alerts report"},{"name":"get_watch","description":"Returns one watch of the organisation: constraints, solution in place, challenger with its switch brief and HODDS status, challenger_reason when there is none, "},{"name":"list_watches","description":"Lists the watches of the organisation with their challenger and number of pending alerts; include_closed adds the watches closed in the last 30 days. Needs an o"},{"name":"set_current_choice","description":"Sets a solution by id or free name (any process), null clears. Returns the watch; challenger recomputed later. Needs an organisation token (Authorization: Beare"},{"name":"ack_alerts","description":"Acknowledges alerts of one watch (alert_ids, or all: true for every alert of this watch); the only call that empties the pending delivery. Returns the number ac"},{"name":"rate_alert","description":"Marks one alert relevant or not_relevant, with an optional note of at most 500 characters. It never changes ranking. Needs an organisation token (Authorization:"},{"name":"unwatch_need","description":"Closes a watch; its need, constraints and alerts are erased 30 days after closing. Needs an organisation token (Authorization: Bearer hodds_...); without it the"},{"name":"get_creator_plan","description":"Returns the demand data subscription of the organisation of the token: plan NONE or SUBSCRIBED, subscribed processes, pending removals, the coming invoice, paym"},{"name":"set_creator_processes","description":"Replaces the list of subscribed processes. Without an active subscription the result has status 402 and a Stripe Checkout destination for a person to open. With"},{"name":"list_gaps","description":"Returns, for a subscribed process, the gaps formulated by HODDS and the client aggregates above the anonymity threshold (watched needs, organisations watching, "},{"name":"cancel_creator_plan","description":"Stops the subscription at the end of the paid period. Listings, claims, declarations and ranking are unchanged; the coarse demand table stays free. Contract 0.3"},{"name":"get_plan","description":"Returns the plan of the organisation of the token: FREE, PAID, PAST_DUE, ENDING or ENDED; watched solutions billed in the current Stripe period, offer_version, "},{"name":"cancel_plan","description":"Stops the subscription at period end; new paid watches are refused immediately. Then paid watches close and remain readable 30 days. No renewal minimum. Agent t"},{"name":"compare_solutions","description":"Compare 2–3 catalogue IDs by required capabilities, offer, context and dated sources. Unknown/stale/conflict stay explicit; unknown price is never zero. Discove"}],"toolCount":18,"toolsHash":"56fb9b24c6dedae60d6cc08204ce8392ba3fc1f1c12639bae2f036b3d296cae7","serverName":"hodds","capabilities":["tools"],"serverVersion":"0.7.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-31T07:28:33.043Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1207,"error":null,"detail":{"tools":[{"name":"search_solutions","description":"Searches the HODDS catalogue of software, SaaS, APIs and online services, organised by business process, for records that match a need written in English or Fre"},{"name":"get_solution","description":"Returns one HODDS catalogue record by id (an option id returned by search_solutions): name, homepage, summary in English and French, processes (the first is pri"},{"name":"list_processes","description":"Returns the HODDS process taxonomy: groups (for example \"Run the business\") and processes (for example \"invoice-and-get-paid\"), with English and French labels a"},{"name":"send_feedback","description":"Stores a declarative outcome report for an option returned by search_solutions: outcome YES (the option met the need), PARTLY or NO, with the request_id and the"},{"name":"watch_need","description":"Watches a need; CATEGORY follows a process. Optional target selects one product and capability_ids (empty = whole product), counted once. Targeted alerts report"},{"name":"get_watch","description":"Returns one watch of the organisation: constraints, solution in place, challenger with its switch brief and HODDS status, challenger_reason when there is none, "},{"name":"list_watches","description":"Lists the watches of the organisation with their challenger and number of pending alerts; include_closed adds the watches closed in the last 30 days. Needs an o"},{"name":"set_current_choice","description":"Sets a solution by id or free name (any process), null clears. Returns the watch; challenger recomputed later. Needs an organisation token (Authorization: Beare"},{"name":"ack_alerts","description":"Acknowledges alerts of one watch (alert_ids, or all: true for every alert of this watch); the only call that empties the pending delivery. Returns the number ac"},{"name":"rate_alert","description":"Marks one alert relevant or not_relevant, with an optional note of at most 500 characters. It never changes ranking. Needs an organisation token (Authorization:"},{"name":"unwatch_need","description":"Closes a watch; its need, constraints and alerts are erased 30 days after closing. Needs an organisation token (Authorization: Bearer hodds_...); without it the"},{"name":"get_creator_plan","description":"Returns the demand data subscription of the organisation of the token: plan NONE or SUBSCRIBED, subscribed processes, pending removals, the coming invoice, paym"},{"name":"set_creator_processes","description":"Replaces the list of subscribed processes. Without an active subscription the result has status 402 and a Stripe Checkout destination for a person to open. With"},{"name":"list_gaps","description":"Returns, for a subscribed process, the gaps formulated by HODDS and the client aggregates above the anonymity threshold (watched needs, organisations watching, "},{"name":"cancel_creator_plan","description":"Stops the subscription at the end of the paid period. Listings, claims, declarations and ranking are unchanged; the coarse demand table stays free. Contract 0.3"},{"name":"get_plan","description":"Returns the plan of the organisation of the token: FREE, PAID, PAST_DUE, ENDING or ENDED; watched solutions billed in the current Stripe period, offer_version, "},{"name":"cancel_plan","description":"Stops the subscription at period end; new paid watches are refused immediately. Then paid watches close and remain readable 30 days. No renewal minimum. Agent t"},{"name":"compare_solutions","description":"Compare 2–3 catalogue IDs by required capabilities, offer, context and dated sources. Unknown/stale/conflict stay explicit; unknown price is never zero. Discove"}],"toolCount":18,"toolsHash":"56fb9b24c6dedae60d6cc08204ce8392ba3fc1f1c12639bae2f036b3d296cae7","serverName":"hodds","capabilities":["tools"],"serverVersion":"0.7.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-30T23:26:55.211Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":614,"error":null,"detail":{"tools":[{"name":"search_solutions","description":"Searches the HODDS catalogue of software, SaaS, APIs and online services, organised by business process, for records that match a need written in English or Fre"},{"name":"get_solution","description":"Returns one HODDS catalogue record by id (an option id returned by search_solutions): name, homepage, summary in English and French, processes (the first is pri"},{"name":"list_processes","description":"Returns the HODDS process taxonomy: groups (for example \"Run the business\") and processes (for example \"invoice-and-get-paid\"), with English and French labels a"},{"name":"send_feedback","description":"Stores a declarative outcome report for an option returned by search_solutions: outcome YES (the option met the need), PARTLY or NO, with the request_id and the"},{"name":"watch_need","description":"Watches a need; CATEGORY follows a process. Optional target selects one product and capability_ids (empty = whole product), counted once. Targeted alerts report"},{"name":"get_watch","description":"Returns one watch of the organisation: constraints, solution in place, challenger with its switch brief and HODDS status, challenger_reason when there is none, "},{"name":"list_watches","description":"Lists the watches of the organisation with their challenger and number of pending alerts; include_closed adds the watches closed in the last 30 days. Needs an o"},{"name":"set_current_choice","description":"Sets a solution by id or free name (any process), null clears. Returns the watch; challenger recomputed later. Needs an organisation token (Authorization: Beare"},{"name":"ack_alerts","description":"Acknowledges alerts of one watch (alert_ids, or all: true for every alert of this watch); the only call that empties the pending delivery. Returns the number ac"},{"name":"rate_alert","description":"Marks one alert relevant or not_relevant, with an optional note of at most 500 characters. It never changes ranking. Needs an organisation token (Authorization:"},{"name":"unwatch_need","description":"Closes a watch; its need, constraints and alerts are erased 30 days after closing. Needs an organisation token (Authorization: Bearer hodds_...); without it the"},{"name":"get_creator_plan","description":"Returns the demand data subscription of the organisation of the token: plan NONE or SUBSCRIBED, subscribed processes, pending removals, the coming invoice, paym"},{"name":"set_creator_processes","description":"Replaces the list of subscribed processes. Without an active subscription the result has status 402 and a Stripe Checkout destination for a person to open. With"},{"name":"list_gaps","description":"Returns, for a subscribed process, the gaps formulated by HODDS and the client aggregates above the anonymity threshold (watched needs, organisations watching, "},{"name":"cancel_creator_plan","description":"Stops the subscription at the end of the paid period. Listings, claims, declarations and ranking are unchanged; the coarse demand table stays free. Contract 0.3"},{"name":"get_plan","description":"Returns the plan of the organisation of the token: FREE, PAID, PAST_DUE, ENDING or ENDED; watched solutions billed in the current Stripe period, offer_version, "},{"name":"cancel_plan","description":"Stops the subscription at period end; new paid watches are refused immediately. Then paid watches close and remain readable 30 days. No renewal minimum. Agent t"},{"name":"compare_solutions","description":"Compare 2–3 catalogue IDs by required capabilities, offer, context and dated sources. Unknown/stale/conflict stay explicit; unknown price is never zero. Discove"}],"toolCount":18,"toolsHash":"56fb9b24c6dedae60d6cc08204ce8392ba3fc1f1c12639bae2f036b3d296cae7","serverName":"hodds","capabilities":["tools"],"serverVersion":"0.7.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-30T15:25:46.550Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":72,"error":null,"detail":{"tools":[{"name":"search_solutions","description":"Searches the HODDS catalogue of software, SaaS, APIs and online services, organised by business process, for records that match a need written in English or Fre"},{"name":"get_solution","description":"Returns one HODDS catalogue record by id (an option id returned by search_solutions): name, homepage, summary in English and French, processes (the first is pri"},{"name":"list_processes","description":"Returns the HODDS process taxonomy: groups (for example \"Run the business\") and processes (for example \"invoice-and-get-paid\"), with English and French labels a"},{"name":"send_feedback","description":"Stores a declarative outcome report for an option returned by search_solutions: outcome YES (the option met the need), PARTLY or NO, with the request_id and the"},{"name":"watch_need","description":"Watches a need; CATEGORY follows a process. Optional target selects one product and capability_ids (empty = whole product), counted once. Targeted alerts report"},{"name":"get_watch","description":"Returns one watch of the organisation: constraints, solution in place, challenger with its switch brief and HODDS status, challenger_reason when there is none, "},{"name":"list_watches","description":"Lists the watches of the organisation with their challenger and number of pending alerts; include_closed adds the watches closed in the last 30 days. Needs an o"},{"name":"set_current_choice","description":"Sets a solution by id or free name (any process), null clears. Returns the watch; challenger recomputed later. Needs an organisation token (Authorization: Beare"},{"name":"ack_alerts","description":"Acknowledges alerts of one watch (alert_ids, or all: true for every alert of this watch); the only call that empties the pending delivery. Returns the number ac"},{"name":"rate_alert","description":"Marks one alert relevant or not_relevant, with an optional note of at most 500 characters. It never changes ranking. Needs an organisation token (Authorization:"},{"name":"unwatch_need","description":"Closes a watch; its need, constraints and alerts are erased 30 days after closing. Needs an organisation token (Authorization: Bearer hodds_...); without it the"},{"name":"get_creator_plan","description":"Returns the demand data subscription of the organisation of the token: plan NONE or SUBSCRIBED, subscribed processes, pending removals, the coming invoice, paym"},{"name":"set_creator_processes","description":"Replaces the list of subscribed processes. Without an active subscription the result has status 402 and a Stripe Checkout destination for a person to open. With"},{"name":"list_gaps","description":"Returns, for a subscribed process, the gaps formulated by HODDS and the client aggregates above the anonymity threshold (watched needs, organisations watching, "},{"name":"cancel_creator_plan","description":"Stops the subscription at the end of the paid period. Listings, claims, declarations and ranking are unchanged; the coarse demand table stays free. Contract 0.3"},{"name":"get_plan","description":"Returns the plan of the organisation of the token: FREE, PAID, PAST_DUE, ENDING or ENDED; watched solutions billed in the current Stripe period, offer_version, "},{"name":"cancel_plan","description":"Stops the subscription at period end; new paid watches are refused immediately. Then paid watches close and remain readable 30 days. No renewal minimum. Agent t"},{"name":"compare_solutions","description":"Compare 2–3 catalogue IDs by required capabilities, offer, context and dated sources. Unknown/stale/conflict stay explicit; unknown price is never zero. Discove"}],"toolCount":18,"toolsHash":"56fb9b24c6dedae60d6cc08204ce8392ba3fc1f1c12639bae2f036b3d296cae7","serverName":"hodds","capabilities":["tools"],"serverVersion":"0.7.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-30T08:24:20.625Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1335,"error":null,"detail":{"tools":[{"name":"search_solutions","description":"Searches the HODDS catalogue of software, SaaS, APIs and online services, organised by business process, for records that match a need written in English or Fre"},{"name":"get_solution","description":"Returns one HODDS catalogue record by id (an option id returned by search_solutions): name, homepage, summary in English and French, processes (the first is pri"},{"name":"list_processes","description":"Returns the HODDS process taxonomy: groups (for example \"Run the business\") and processes (for example \"invoice-and-get-paid\"), with English and French labels a"},{"name":"send_feedback","description":"Stores a declarative outcome report for an option returned by search_solutions: outcome YES (the option met the need), PARTLY or NO, with the request_id and the"},{"name":"watch_need","description":"Watches a need; CATEGORY follows a process. Optional target selects one product and capability_ids (empty = whole product), counted once. Targeted alerts report"},{"name":"get_watch","description":"Returns one watch of the organisation: constraints, solution in place, challenger with its switch brief and HODDS status, challenger_reason when there is none, "},{"name":"list_watches","description":"Lists the watches of the organisation with their challenger and number of pending alerts; include_closed adds the watches closed in the last 30 days. Needs an o"},{"name":"set_current_choice","description":"Sets a solution by id or free name (any process), null clears. Returns the watch; challenger recomputed later. Needs an organisation token (Authorization: Beare"},{"name":"ack_alerts","description":"Acknowledges alerts of one watch (alert_ids, or all: true for every alert of this watch); the only call that empties the pending delivery. Returns the number ac"},{"name":"rate_alert","description":"Marks one alert relevant or not_relevant, with an optional note of at most 500 characters. It never changes ranking. Needs an organisation token (Authorization:"},{"name":"unwatch_need","description":"Closes a watch; its need, constraints and alerts are erased 30 days after closing. Needs an organisation token (Authorization: Bearer hodds_...); without it the"},{"name":"get_creator_plan","description":"Returns the demand data subscription of the organisation of the token: plan NONE or SUBSCRIBED, subscribed processes, pending removals, the coming invoice, paym"},{"name":"set_creator_processes","description":"Replaces the list of subscribed processes. Without an active subscription the result has status 402 and a Stripe Checkout destination for a person to open. With"},{"name":"list_gaps","description":"Returns, for a subscribed process, the gaps formulated by HODDS and the client aggregates above the anonymity threshold (watched needs, organisations watching, "},{"name":"cancel_creator_plan","description":"Stops the subscription at the end of the paid period. Listings, claims, declarations and ranking are unchanged; the coarse demand table stays free. Contract 0.3"},{"name":"get_plan","description":"Returns the plan of the organisation of the token: FREE, PAID, PAST_DUE, ENDING or ENDED; watched solutions billed in the current Stripe period, offer_version, "},{"name":"cancel_plan","description":"Stops the subscription at period end; new paid watches are refused immediately. Then paid watches close and remain readable 30 days. No renewal minimum. Agent t"},{"name":"compare_solutions","description":"Compare 2–3 catalogue IDs by required capabilities, offer, context and dated sources. Unknown/stale/conflict stay explicit; unknown price is never zero. Discove"}],"toolCount":18,"toolsHash":"56fb9b24c6dedae60d6cc08204ce8392ba3fc1f1c12639bae2f036b3d296cae7","serverName":"hodds","capabilities":["tools"],"serverVersion":"0.7.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-30T00:24:17.240Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1007,"error":null,"detail":{"tools":[{"name":"search_solutions","description":"Searches the HODDS catalogue of software, SaaS, APIs and online services, organised by business process, for records that match a need written in English or Fre"},{"name":"get_solution","description":"Returns one HODDS catalogue record by id (an option id returned by search_solutions): name, homepage, summary in English and French, processes (the first is pri"},{"name":"list_processes","description":"Returns the HODDS process taxonomy: groups (for example \"Run the business\") and processes (for example \"invoice-and-get-paid\"), with English and French labels a"},{"name":"send_feedback","description":"Stores a declarative outcome report for an option returned by search_solutions: outcome YES (the option met the need), PARTLY or NO, with the request_id and the"},{"name":"watch_need","description":"Watches a need; CATEGORY follows a process. Optional target selects one product and capability_ids (empty = whole product), counted once. Targeted alerts report"},{"name":"get_watch","description":"Returns one watch of the organisation: constraints, solution in place, challenger with its switch brief and HODDS status, challenger_reason when there is none, "},{"name":"list_watches","description":"Lists the watches of the organisation with their challenger and number of pending alerts; include_closed adds the watches closed in the last 30 days. Needs an o"},{"name":"set_current_choice","description":"Sets a solution by id or free name (any process), null clears. Returns the watch; challenger recomputed later. Needs an organisation token (Authorization: Beare"},{"name":"ack_alerts","description":"Acknowledges alerts of one watch (alert_ids, or all: true for every alert of this watch); the only call that empties the pending delivery. Returns the number ac"},{"name":"rate_alert","description":"Marks one alert relevant or not_relevant, with an optional note of at most 500 characters. It never changes ranking. Needs an organisation token (Authorization:"},{"name":"unwatch_need","description":"Closes a watch; its need, constraints and alerts are erased 30 days after closing. Needs an organisation token (Authorization: Bearer hodds_...); without it the"},{"name":"get_creator_plan","description":"Returns the demand data subscription of the organisation of the token: plan NONE or SUBSCRIBED, subscribed processes, pending removals, the coming invoice, paym"},{"name":"set_creator_processes","description":"Replaces the list of subscribed processes. Without an active subscription the result has status 402 and a Stripe Checkout destination for a person to open. With"},{"name":"list_gaps","description":"Returns, for a subscribed process, the gaps formulated by HODDS and the client aggregates above the anonymity threshold (watched needs, organisations watching, "},{"name":"cancel_creator_plan","description":"Stops the subscription at the end of the paid period. Listings, claims, declarations and ranking are unchanged; the coarse demand table stays free. Contract 0.3"},{"name":"get_plan","description":"Returns the plan of the organisation of the token: FREE, PAID, PAST_DUE, ENDING or ENDED; watched solutions billed in the current Stripe period, offer_version, "},{"name":"cancel_plan","description":"Stops the subscription at period end; new paid watches are refused immediately. Then paid watches close and remain readable 30 days. No renewal minimum. Agent t"},{"name":"compare_solutions","description":"Compare 2–3 catalogue IDs by required capabilities, offer, context and dated sources. Unknown/stale/conflict stay explicit; unknown price is never zero. Discove"}],"toolCount":18,"toolsHash":"56fb9b24c6dedae60d6cc08204ce8392ba3fc1f1c12639bae2f036b3d296cae7","serverName":"hodds","capabilities":["tools"],"serverVersion":"0.7.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-29T17:25:11.689Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":701,"error":null,"detail":{"tools":[{"name":"search_solutions","description":"Searches the HODDS catalogue of software, SaaS, APIs and online services, organised by business process, for records that match a need written in English or Fre"},{"name":"get_solution","description":"Returns one HODDS catalogue record by id (an option id returned by search_solutions): name, homepage, summary in English and French, processes (the first is pri"},{"name":"list_processes","description":"Returns the HODDS process taxonomy: groups (for example \"Run the business\") and processes (for example \"invoice-and-get-paid\"), with English and French labels a"},{"name":"send_feedback","description":"Stores a declarative outcome report for an option returned by search_solutions: outcome YES (the option met the need), PARTLY or NO, with the request_id and the"},{"name":"watch_need","description":"Watches a need; CATEGORY follows a process. Initially not_computed; rules produce challenger/switch brief; alerts on following calls. Unknown constraints stay u"},{"name":"get_watch","description":"Returns one watch of the organisation: constraints, solution in place, challenger with its switch brief and HODDS status, challenger_reason when there is none, "},{"name":"list_watches","description":"Lists the watches of the organisation with their challenger and number of pending alerts; include_closed adds the watches closed in the last 30 days. Needs an o"},{"name":"set_current_choice","description":"Sets a solution by id or free name (any process), null clears. Returns the watch; challenger recomputed later. Needs an organisation token (Authorization: Beare"},{"name":"ack_alerts","description":"Acknowledges alerts of one watch (alert_ids, or all: true for every alert of this watch); the only call that empties the pending delivery. Returns the number ac"},{"name":"rate_alert","description":"Marks one alert relevant or not_relevant, with an optional note of at most 500 characters. It never changes ranking. Needs an organisation token (Authorization:"},{"name":"unwatch_need","description":"Closes a watch; its need, constraints and alerts are erased 30 days after closing. Needs an organisation token (Authorization: Bearer hodds_...); without it the"},{"name":"get_creator_plan","description":"Returns the demand data subscription of the organisation of the token: plan NONE or SUBSCRIBED, subscribed processes, pending removals, the coming invoice, paym"},{"name":"set_creator_processes","description":"Replaces the list of subscribed processes. Without an active subscription the result has status 402 and a Stripe Checkout destination for a person to open. With"},{"name":"list_gaps","description":"Returns, for a subscribed process, the gaps formulated by HODDS and the client aggregates above the anonymity threshold (watched needs, organisations watching, "},{"name":"cancel_creator_plan","description":"Stops the subscription at the end of the paid period. Listings, claims, declarations and ranking are unchanged; the coarse demand table stays free. Contract 0.3"},{"name":"get_plan","description":"Returns the plan of the organisation of the token: FREE, PAID, PAST_DUE, ENDING or ENDED; watched solutions billed in the current Stripe period, offer_version, "},{"name":"cancel_plan","description":"Stops the subscription at period end; new paid watches are refused immediately. Then paid watches close and remain readable 30 days. No renewal minimum. Agent t"},{"name":"compare_solutions","description":"Compare 2–3 catalogue IDs by required capabilities, offer, context and dated sources. Unknown/stale/conflict stay explicit; unknown price is never zero. Discove"}],"toolCount":18,"toolsHash":"f7e240b936fe95d687a79f94c5177fe879c0752bbc7e855c2cab6d959bb9764c","serverName":"hodds","capabilities":["tools"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-29T10:25:55.602Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1016,"error":null,"detail":{"tools":[{"name":"search_solutions","description":"Searches the HODDS catalogue of software, SaaS, APIs and online services, organised by business process, for records that match a need written in English or Fre"},{"name":"get_solution","description":"Returns one HODDS catalogue record by id (an option id returned by search_solutions): name, homepage, summary in English and French, processes (the first is pri"},{"name":"list_processes","description":"Returns the HODDS process taxonomy: groups (for example \"Run the business\") and processes (for example \"invoice-and-get-paid\"), with English and French labels a"},{"name":"send_feedback","description":"Stores a declarative outcome report for an option returned by search_solutions: outcome YES (the option met the need), PARTLY or NO, with the request_id and the"},{"name":"watch_need","description":"Watches a need; CATEGORY follows a process. Initially not_computed; rules produce challenger/switch brief; alerts on following calls. Unknown constraints stay u"},{"name":"get_watch","description":"Returns one watch of the organisation: constraints, solution in place, challenger with its switch brief and HODDS status, challenger_reason when there is none, "},{"name":"list_watches","description":"Lists the watches of the organisation with their challenger and number of pending alerts; include_closed adds the watches closed in the last 30 days. Needs an o"},{"name":"set_current_choice","description":"Sets a solution by id or free name (any process), null clears. Returns the watch; challenger recomputed later. Needs an organisation token (Authorization: Beare"},{"name":"ack_alerts","description":"Acknowledges alerts of one watch (alert_ids, or all: true for every alert of this watch); the only call that empties the pending delivery. Returns the number ac"},{"name":"rate_alert","description":"Marks one alert relevant or not_relevant, with an optional note of at most 500 characters. It never changes ranking. Needs an organisation token (Authorization:"},{"name":"unwatch_need","description":"Closes a watch; its need, constraints and alerts are erased 30 days after closing. Needs an organisation token (Authorization: Bearer hodds_...); without it the"},{"name":"get_creator_plan","description":"Returns the demand data subscription of the organisation of the token: plan NONE or SUBSCRIBED, subscribed processes, pending removals, the coming invoice, paym"},{"name":"set_creator_processes","description":"Replaces the list of subscribed processes. Without an active subscription the result has status 402 and a Stripe Checkout destination for a person to open. With"},{"name":"list_gaps","description":"Returns, for a subscribed process, the gaps formulated by HODDS and the client aggregates above the anonymity threshold (watched needs, organisations watching, "},{"name":"cancel_creator_plan","description":"Stops the subscription at the end of the paid period. Listings, claims, declarations and ranking are unchanged; the coarse demand table stays free. Contract 0.3"},{"name":"get_plan","description":"Returns the plan of the organisation of the token: FREE, PAID, PAST_DUE, ENDING or ENDED; watched solutions billed in the current Stripe period, offer_version, "},{"name":"cancel_plan","description":"Stops the subscription at period end; new paid watches are refused immediately. Then paid watches close and remain readable 30 days. No renewal minimum. Agent t"},{"name":"compare_solutions","description":"Compare 2–3 catalogue IDs by required capabilities, offer, context and dated sources. Unknown/stale/conflict stay explicit; unknown price is never zero. Discove"}],"toolCount":18,"toolsHash":"f7e240b936fe95d687a79f94c5177fe879c0752bbc7e855c2cab6d959bb9764c","serverName":"hodds","capabilities":["tools"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-29T02:30:49.651Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":502,"error":null,"detail":{"tools":[{"name":"search_solutions","description":"Searches the HODDS catalogue of software, SaaS, APIs and online services, organised by business process, for records that match a need written in English or Fre"},{"name":"get_solution","description":"Returns one HODDS catalogue record by id (an option id returned by search_solutions): name, homepage, summary in English and French, processes (the first is pri"},{"name":"list_processes","description":"Returns the HODDS process taxonomy: groups (for example \"Run the business\") and processes (for example \"invoice-and-get-paid\"), with English and French labels a"},{"name":"send_feedback","description":"Stores a declarative outcome report for an option returned by search_solutions: outcome YES (the option met the need), PARTLY or NO, with the request_id and the"},{"name":"watch_need","description":"Watches a need; CATEGORY follows a process. Initially not_computed; rules produce challenger/switch brief; alerts on following calls. Unknown constraints stay u"},{"name":"get_watch","description":"Returns one watch of the organisation: constraints, solution in place, challenger with its switch brief and HODDS status, challenger_reason when there is none, "},{"name":"list_watches","description":"Lists the watches of the organisation with their challenger and number of pending alerts; include_closed adds the watches closed in the last 30 days. Needs an o"},{"name":"set_current_choice","description":"Sets a solution by id or free name (any process), null clears. Returns the watch; challenger recomputed later. Needs an organisation token (Authorization: Beare"},{"name":"ack_alerts","description":"Acknowledges alerts of one watch (alert_ids, or all: true for every alert of this watch); the only call that empties the pending delivery. Returns the number ac"},{"name":"rate_alert","description":"Marks one alert relevant or not_relevant, with an optional note of at most 500 characters. It never changes ranking. Needs an organisation token (Authorization:"},{"name":"unwatch_need","description":"Closes a watch; its need, constraints and alerts are erased 30 days after closing. Needs an organisation token (Authorization: Bearer hodds_...); without it the"},{"name":"get_creator_plan","description":"Returns the demand data subscription of the organisation of the token: plan NONE or SUBSCRIBED, subscribed processes, pending removals, the coming invoice, paym"},{"name":"set_creator_processes","description":"Replaces the list of subscribed processes. Without an active subscription the result has status 402 and a Stripe Checkout destination for a person to open. With"},{"name":"list_gaps","description":"Returns, for a subscribed process, the gaps formulated by HODDS and the client aggregates above the anonymity threshold (watched needs, organisations watching, "},{"name":"cancel_creator_plan","description":"Stops the subscription at the end of the paid period. Listings, claims, declarations and ranking are unchanged; the coarse demand table stays free. Contract 0.3"},{"name":"get_plan","description":"Returns the plan of the organisation of the token: FREE, PAID, PAST_DUE, ENDING or ENDED; watched solutions billed in the current Stripe period, offer_version, "},{"name":"cancel_plan","description":"Stops the subscription at period end; new paid watches are refused immediately. Then paid watches close and remain readable 30 days. No renewal minimum. Agent t"},{"name":"compare_solutions","description":"Compare 2–3 catalogue IDs by required capabilities, offer, context and dated sources. Unknown/stale/conflict stay explicit; unknown price is never zero. Discove"}],"toolCount":18,"toolsHash":"f7e240b936fe95d687a79f94c5177fe879c0752bbc7e855c2cab6d959bb9764c","serverName":"hodds","capabilities":["tools"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-28T19:25:34.215Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":620,"error":null,"detail":{"tools":[{"name":"search_solutions","description":"Searches the HODDS catalogue of software, SaaS, APIs and online services, organised by business process, for records that match a need written in English or Fre"},{"name":"get_solution","description":"Returns one HODDS catalogue record by id (an option id returned by search_solutions): name, homepage, summary in English and French, processes (the first is pri"},{"name":"list_processes","description":"Returns the HODDS process taxonomy: groups (for example \"Run the business\") and processes (for example \"invoice-and-get-paid\"), with English and French labels a"},{"name":"send_feedback","description":"Stores a declarative outcome report for an option returned by search_solutions: outcome YES (the option met the need), PARTLY or NO, with the request_id and the"},{"name":"watch_need","description":"Watches a need; CATEGORY follows a process. Initially not_computed; rules produce challenger/switch brief; alerts on following calls. Unknown constraints stay u"},{"name":"get_watch","description":"Returns one watch of the organisation: constraints, solution in place, challenger with its switch brief and HODDS status, challenger_reason when there is none, "},{"name":"list_watches","description":"Lists the watches of the organisation with their challenger and number of pending alerts; include_closed adds the watches closed in the last 30 days. Needs an o"},{"name":"set_current_choice","description":"Sets a solution by id or free name (any process), null clears. Returns the watch; challenger recomputed later. Needs an organisation token (Authorization: Beare"},{"name":"ack_alerts","description":"Acknowledges alerts of one watch (alert_ids, or all: true for every alert of this watch); the only call that empties the pending delivery. Returns the number ac"},{"name":"rate_alert","description":"Marks one alert relevant or not_relevant, with an optional note of at most 500 characters. It never changes ranking. Needs an organisation token (Authorization:"},{"name":"unwatch_need","description":"Closes a watch; its need, constraints and alerts are erased 30 days after closing. Needs an organisation token (Authorization: Bearer hodds_...); without it the"},{"name":"get_creator_plan","description":"Returns the demand data subscription of the organisation of the token: plan NONE or SUBSCRIBED, subscribed processes, pending removals, the coming invoice, paym"},{"name":"set_creator_processes","description":"Replaces the list of subscribed processes. Without an active subscription the result has status 402 and a Stripe Checkout destination for a person to open. With"},{"name":"list_gaps","description":"Returns, for a subscribed process, the gaps formulated by HODDS and the client aggregates above the anonymity threshold (watched needs, organisations watching, "},{"name":"cancel_creator_plan","description":"Stops the subscription at the end of the paid period. Listings, claims, declarations and ranking are unchanged; the coarse demand table stays free. Contract 0.3"},{"name":"get_plan","description":"Returns the plan of the organisation of the token: FREE, PAID, PAST_DUE, ENDING or ENDED; watched solutions billed in the current Stripe period, offer_version, "},{"name":"cancel_plan","description":"Stops the subscription at period end; new paid watches are refused immediately. Then paid watches close and remain readable 30 days. No renewal minimum. Agent t"},{"name":"compare_solutions","description":"Compare 2–3 catalogue IDs by required capabilities, offer, context and dated sources. Unknown/stale/conflict stay explicit; unknown price is never zero. Discove"}],"toolCount":18,"toolsHash":"f7e240b936fe95d687a79f94c5177fe879c0752bbc7e855c2cab6d959bb9764c","serverName":"hodds","capabilities":["tools"],"serverVersion":"0.6.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"search_solutions","description":"Searches the HODDS catalogue of software, SaaS, APIs and online services, organised by business process, for records that match a need written in English or Fre"},{"name":"get_solution","description":"Returns one HODDS catalogue record by id (an option id returned by search_solutions): name, homepage, summary in English and French, processes (the first is pri"},{"name":"list_processes","description":"Returns the HODDS process taxonomy: groups (for example \"Run the business\") and processes (for example \"invoice-and-get-paid\"), with English and French labels a"},{"name":"send_feedback","description":"Stores a declarative outcome report for an option returned by search_solutions: outcome YES (the option met the need), PARTLY or NO, with the request_id and the"},{"name":"watch_need","description":"Watches a need; CATEGORY follows a process. Optional target selects one product and capability_ids (empty = whole product), counted once. Targeted alerts report"},{"name":"get_watch","description":"Returns one watch of the organisation: constraints, solution in place, challenger with its switch brief and HODDS status, challenger_reason when there is none, "},{"name":"list_watches","description":"Lists the watches of the organisation with their challenger and number of pending alerts; include_closed adds the watches closed in the last 30 days. Needs an o"},{"name":"set_current_choice","description":"Sets a solution by id or free name (any process), null clears. Returns the watch; challenger recomputed later. Needs an organisation token (Authorization: Beare"},{"name":"ack_alerts","description":"Acknowledges alerts of one watch (alert_ids, or all: true for every alert of this watch); the only call that empties the pending delivery. Returns the number ac"},{"name":"rate_alert","description":"Marks one alert relevant or not_relevant, with an optional note of at most 500 characters. It never changes ranking. Needs an organisation token (Authorization:"},{"name":"unwatch_need","description":"Closes a watch; its need, constraints and alerts are erased 30 days after closing. Needs an organisation token (Authorization: Bearer hodds_...); without it the"},{"name":"get_creator_plan","description":"Returns the demand data subscription of the organisation of the token: plan NONE or SUBSCRIBED, subscribed processes, pending removals, the coming invoice, paym"},{"name":"set_creator_processes","description":"Replaces the list of subscribed processes. Without an active subscription the result has status 402 and a Stripe Checkout destination for a person to open. With"},{"name":"list_gaps","description":"Returns, for a subscribed process, the gaps formulated by HODDS and the client aggregates above the anonymity threshold (watched needs, organisations watching, "},{"name":"cancel_creator_plan","description":"Stops the subscription at the end of the paid period. Listings, claims, declarations and ranking are unchanged; the coarse demand table stays free. Contract 0.3"},{"name":"get_plan","description":"Returns the plan of the organisation of the token: FREE, PAID, PAST_DUE, ENDING or ENDED; watched solutions billed in the current Stripe period, offer_version, "},{"name":"cancel_plan","description":"Stops the subscription at period end; new paid watches are refused immediately. Then paid watches close and remain readable 30 days. No renewal minimum. Agent t"},{"name":"compare_solutions","description":"Compare 2–3 catalogue IDs by required capabilities, offer, context and dated sources. Unknown/stale/conflict stay explicit; unknown price is never zero. Discove"}],"package":null,"toolSurface":{"id":"ts_sdquh99yy8vb","endpointId":"ep_avp6q477pu4y","hash":"56fb9b24c6dedae60d6cc08204ce8392ba3fc1f1c12639bae2f036b3d296cae7","toolCount":18,"serverName":"hodds","serverVersion":"0.7.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-30T00:24:17.247Z","lastSeenAt":"2026-10-31T15:27:09.159Z","observations":6,"toolNames":["search_solutions","get_solution","list_processes","send_feedback","watch_need","get_watch","list_watches","set_current_choice","ack_alerts","rate_alert","unwatch_need","get_creator_plan","set_creator_processes","list_gaps","cancel_creator_plan","get_plan","cancel_plan","compare_solutions"],"distinctSurfaces":2},"endpointFacts":[{"id":"ep_avp6q477pu4y","url":"https://hodds.ai/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-30T23:26:55.246Z","auth":{"observedAt":"2026-10-30T23:26:55.268Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-30T23:26:55.287Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"hodds.ai","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-27T13:59:48.000Z","validTo":"2026-12-26T14:59:32.000Z","daysToExpiry":55,"sanCount":2,"fingerprint256":"E9:4B:33:BA:FA:32:AA:E3:92:5B:5E:23:49:B4:D5:96:5B:43:E8:F5:A8:1E:DF:71:CA:EA:EE:5B:B9:B4:D1:C2"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"ai.hodds/hodds","url":"https://registry.modelcontextprotocol.io/v0/servers/ai.hodds%2Fhodds","firstSeenAt":"2026-10-28T03:18:22.246Z","fetchedAt":"2026-10-28T03:18:22.246Z","normalizedAt":"2026-10-28T03:18:22.246Z"},{"source":"ard_catalog","key":"urn:air:hodds.ai:mcp:hodds","url":"https://hodds.ai/.well-known/ai-catalog.json","firstSeenAt":"2026-10-28T03:21:48.657Z","fetchedAt":"2026-10-28T03:21:48.657Z","normalizedAt":"2026-10-28T03:21:48.657Z"}]},"firstSeenAt":"2026-10-28T03:18:22.246Z","updatedAt":"2026-10-31T15:33:45.336Z"}