Server Details
Learn and adopt the Capability Host Protocol — the agentic web's open evidence layer.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- capabilityhostprotocol/chp-core
- GitHub Stars
- 1
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 3.3/5 across 9 of 9 tools scored. Lowest: 2.4/5.
Most tools have distinct purposes, but 'explain' and 'faq' both cover learning about CHP, and 'search' may overlap with glossary and FAQ lookups. Descriptions provide enough clarity to distinguish them.
Naming mixes verb-initial patterns (define, explain, get_capability) with noun-like names (faq) and a phrase (how_to_adopt). While all use lowercase and underscores, the verb usage is inconsistent.
9 tools is well-scoped for a protocol documentation server. Each tool serves a clear purpose without being overwhelming or sparse.
Covers key aspects: definitions, explanations, FAQs, capabilities, examples, adoption, adapters, and search. Minor gaps like a conformance checker exist but are not essential for the educational purpose.
Available Tools
9 toolsdefineDefine a CHP termAInspect
Define a CHP primitive. Pass a term, or omit to list the glossary.
| Name | Required | Description | Default |
|---|---|---|---|
| term | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses dual behavior (define vs list), but does not clarify if the operation is read-only or has side effects. The verb 'define' is ambiguous (could imply mutation), leaving behavioral uncertainty.
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, no wasted words, front-loaded with the core action. 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?
For a simple tool with one optional parameter and no output schema, the description covers the main functionality. However, it lacks details on return format or pagination for the glossary list, which could improve 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 description coverage is 0%, but the description adds meaning: it explains that providing 'term' returns a definition, while omitting it lists the glossary. This compensates well for the missing 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 clearly states 'Define a CHP primitive' with a specific verb and resource. It also distinguishes two modes (pass term or omit to list glossary), differentiating from sibling tools like 'explain' or 'faq'.
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 guidance: use 'term' to define, omit to list glossary. It covers both main use cases, though it does not explicitly compare with siblings or mention when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explainExplain a CHP conceptAInspect
Learn what CHP is and how it works. Pass a topic, or omit to list topics. Topics: what-is-chp, evidence-model, why-a-protocol, governance, agentic-web, evidence-vs-telemetry, chp-vs-mcp, conformance.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains that the tool returns explanations for CHP concepts and lists the available topics. It does not describe response format, but for a read-only educational tool this is sufficient.
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 plus a list. It front-loads the purpose and provides a succinct enumeration of topics. No unnecessary 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?
Given the tool's simplicity (one optional parameter, no output schema), the description covers everything: what it does, how to use it, and what topics are available. No 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?
Schema coverage is 0% (no description on the 'topic' property), and the description fully compensates by listing all valid topics and explaining that omitting the parameter lists topics. This adds crucial meaning beyond the bare 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 the tool's purpose: 'Learn what CHP is and how it works.' It also lists specific topics, distinguishing it from sibling tools like 'define' or 'faq' which offer narrower functionality.
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 guidance: 'Pass a topic, or omit to list topics.' This tells the agent how to invoke it and what happens with no argument. It does not explicitly mention when not to use it, but the list of topics implicitly defines the scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faqCHP FAQCInspect
Common questions about CHP. Pass a query to filter, or omit for all.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions filtering but lacks details on side effects, authentication, or rate limits. The tool is likely read-only but this is not stated. Minimal behavioral context is provided.
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 with two sentences, front-loading the purpose. No unnecessary words; every sentence contributes. However, it is possibly too brief given the lack of output schema and annotations.
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 tool with one optional parameter and no output schema, the description is adequate but not complete. It explains the input but lacks details on output format, limits, or error behavior. Sibling tools are not mentioned, leaving the agent to infer context.
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%, but the description adds meaning to the 'query' parameter by explaining it's used for filtering and that omitting it returns all items. This compensates partially, though it does not specify search semantics like case sensitivity or partial matching.
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 'Common questions about CHP' and allows filtering by query, making it clear it retrieves FAQ items. However, it does not explicitly differentiate from sibling tools like 'search' or 'explain', as the resource type is implied but not contrasted.
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 basic usage guidance (pass query to filter or omit for all), but offers no advice on when to use this tool over siblings or when not to use it. No context about prerequisites or alternatives is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_capabilityGet a capability descriptorCInspect
Resolve a capability id to its descriptor.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully disclose behavioral traits. It only states the action (resolve an id to descriptor) with no mention of side effects, required permissions, or what 'descriptor' means. The lack of detail makes it hard for the agent to anticipate results or safety.
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 sentence that is front-loaded with the verb and resource. However, it is too minimal; conciseness should not come at the expense of completeness. It earns a 3 for structure but lacks substance.
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 low complexity (one parameter, no output schema), the description should provide enough context for an agent to use it correctly. It does not explain what a capability descriptor is, how it is structured, or how to get the id (e.g., from list_capabilities). The description is incomplete.
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%, meaning the input schema provides no parameter descriptions. The tool description does not add any meaning beyond the parameter name 'id'. The agent is left to guess what a capability id is or how to obtain 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 states a specific verb 'Resolve' and resource 'capability id to its descriptor', making the core purpose clear. It implies retrieving a single descriptor by ID, which distinguishes it from siblings like list_capabilities that return all capabilities. However, it does not explicitly differentiate from search or get_example.
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?
No guidance is provided on when to use this tool versus alternatives such as list_capabilities (for browsing all capabilities) or search (for finding capabilities by other criteria). The agent is given no help in tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_exampleGet a CHP code exampleAInspect
Get a runnable example. Pass a name, or omit to list examples. Names: hooks-install, inspect-session, minimal, agentic, rag, safety, persistence, evidence-output.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It correctly indicates a read operation ('Get') with no side effects, but does not explicitly disclose safety, authentication needs, or other behavioral traits. For a simple read-only tool, this is minimally adequate.
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 with no unnecessary words. The first sentence states the purpose, the second provides usage guidelines and enumerates valid options. Front-loaded and efficient.
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 no output schema and a single parameter, the description covers usage and parameter semantics adequately. Missing explicit mention of return format, but it is implied by 'runnable example'. Overall sufficient for a simple 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, but the description adds significant meaning: it explains the parameter is optional, its effect when omitted, and lists valid values. This compensates for the schema's lack of documentation.
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 'Get a runnable example' with the verb 'get' and resource 'runnable example', effectively distinguishing it from siblings like 'define', 'explain', and 'faq'.
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 instructs to 'Pass a name, or omit to list examples' and lists valid names, providing clear usage context. However, it does not explicitly state when not to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
how_to_adoptHow to adopt CHPAInspect
Get the steps to start using CHP (begin with agents).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It only states it returns steps but does not disclose any behavioral traits like idempotency, potential side effects, or output format. For a simple informational tool this is minimally acceptable but lacks depth.
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?
One sentence with clear front-loading. It is appropriately sized for a tool that has no parameters. Could be slightly improved by adding a brief note on output format, but overall efficient.
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 parameters, no output schema), the description is complete enough. It states what the tool returns (steps) and the starting point (agents). No major omissions for an informational 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?
There are no parameters, and the schema is fully covered (empty). The description does not need to add parameter details. The baseline for zero parameters is 4, and the description does not detract.
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 ('Get') and resource ('steps to start using CHP') and includes a parenthetical clarifying scope ('begin with agents'). It clearly differentiates from sibling tools like 'define', 'explain', and 'faq' which cover different aspects.
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 when a user wants procedural steps for adoption, but does not explicitly state when to use this tool over alternatives (e.g., 'explain' for general explanations, 'faq' for common questions). No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_adaptersList adaptersCInspect
Browse the open adapter ecosystem, optionally by category.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It only states the basic action and optional filter, without mentioning pagination, result limits, order, or any side effects. This is insufficient for an agent to understand implications of calling the tool.
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 sentence of 10 words, efficiently conveying the core purpose. It is front-loaded with the action and resource. However, it may be too terse for adequate understanding, but for conciseness it scores well.
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 simple tool (one optional param, no output schema, no annotations), the description is minimal. It does not explain what the 'open adapter ecosystem' is, how browsing works, or what the output contains. An agent would lack context 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 schema has 0% description coverage for the 'category' parameter, and the description only says 'optionally by category' without explaining valid values, format, or semantics. No additional meaning is added beyond the parameter name and type. The description fails to compensate for the lack of schema documentation.
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 'Browse the open adapter ecosystem, optionally by category.' It clearly identifies the verb (browse) and resource (adapter ecosystem), and notes the optional category filter. However, it does not distinguish this tool from siblings like list_capabilities or search, which could also browse listings.
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?
No guidance is provided on when to use this tool versus alternatives such as search or list_capabilities. The description only says 'optionally by category' but does not specify what categories exist or when to use the filter. No exclusion criteria or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_capabilitiesList capabilitiesBInspect
List the capabilities the open CHP adapter ecosystem declares, optionally by category.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description adds minimal behavioral context beyond the name ('list' implies read-only), but fails to disclose side effects, permissions, rate limits, or return structure. For a tool with no annotation coverage, this is insufficient.
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?
A single sentence of 13 words is highly concise and front-loaded. Every word adds value; no wasted space.
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 optional parameter, no output schema, and no annotations, the description leaves significant gaps. It does not explain what capabilities are, what fields are returned, or pagination. Compared to siblings like 'get_capability', more context is 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 description coverage is 0%, so the description must compensate. It states 'optionally by category' but does not specify valid values, format, or behavior for the 'category' parameter. This adds some context but is vague.
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 'List' and the resource 'capabilities the open CHP adapter ecosystem declares'. It distinguishes from siblings like 'get_capability' (singular) and 'list_adapters' (different resource type).
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 mentions optional category filtering but provides no explicit guidance on when to use this tool versus alternatives like 'get_capability' or 'search'. No when-not-to-use or contextual hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch CHPCInspect
Search CHP concepts, glossary, FAQs, and the capability catalog.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description fails to disclose behavioral traits such as search type (fuzzy, exact), result characteristics, pagination, or side effects. For a tool with no annotations, the description should compensate but does not.
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 very concise (one sentence) but lacks structure such as separate sections for usage or examples. While front-loaded, it is under-specified and does not earn its place by providing sufficient detail.
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 (searching multiple content types) and the absence of output schema or annotations, the description is incomplete. It does not mention return values, filtering, or how results are presented, leaving significant gaps 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 has one required parameter 'query' with no description (0% coverage). The tool description does not elaborate on the query parameter's format, examples, or constraints, leaving the agent without guidance on how to formulate queries.
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 'Search' and the resources: CHP concepts, glossary, FAQs, and the capability catalog. It effectively communicates the scope of the tool, though it does not explicitly distinguish from sibling tools that cover individual content types.
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?
No guidance is provided on when to use this search tool versus the dedicated sibling tools (e.g., faq, define, explain). The agent is left to infer that search is a catch-all, but explicit usage conditions are missing.
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
- Alicense-qualityAmaintenanceKāhea is a local-first MCP server that enables coding agents to inspect API descriptions, plan exact requests, grant precise capabilities, and invoke operations with sealed evidence.Last updatedApache 2.0
- Flicense-qualityCmaintenanceCryptographically anchored, tamper-evident evidence receipts for AI agents — verified run receipts, existence-at-time proofs, and cited answers from an anchored public record. Remote MCP with proof-gated settlement; attests existence and integrity, never truth.Last updated
- AlicenseAqualityAmaintenanceOpen protocol for AI-agent coordination of professional services. Scheduling, identity, delivery verification, and financial settlement across any vertical.Last updated103131Apache 2.0
- AlicenseCqualityAmaintenanceCryptographic identity and trust protocol for AI agents. 38 MCP tools across 8 protocol layers: Ed25519 identity, delegation chains, values compliance, signed communication, policy engine, task coordination, cross-layer integration, and agentic commerce. 264 tests passing.Last updated1003121Apache 2.0