Skip to main content
Glama

Cemig: Download de Contas

Server Details

Cemig: Bill Download, official-source lookup. Platform-hosted, pay per query with prepaid credit.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
mcp-dir/contas_cemig_download-mcp
GitHub Stars
0
Server Listing
Cemig: Download de Contas

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.1/5 across 6 of 7 tools scored. Lowest: 3.4/5.

Server CoherenceC
Disambiguation4/5

Most tools have clearly distinct purposes: authenticate handles token acquisition, connect reports connection status, marketplace is a large discovery/execution tool, report_bug is for feedback, show_version and toolkit_info are informational. Slight overlap exists between connect and toolkit_info in terms of status reporting, but descriptions make their roles clear.

Naming Consistency2/5

Naming is inconsistent: most tools use simple verb-based names (authenticate, connect, report_bug, show_version) but others are noun-like (marketplace, toolkit_info) and the domain tool `contas_cemig_download_consultar` is a long, Portuguese snake_case noun phrase that does not fit the pattern at all.

Tool Count4/5

The count of 7 tools is within a reasonable range for a server, and none seem redundant or excessive. However, the server is branded as 'Cemig: Download de Contas' but only one tool is domain-specific, making the overall composition feel unbalanced for its stated purpose.

Completeness1/5

The domain coverage is severely lacking: only one tool (`contas_cemig_download_consultar`) addresses the Cemig bill downloading use case, with no support for listing accounts, downloading documents, managing history, or handling multiple bill types. The generic platform tools do not fill this gap, leaving the server nearly useless for its primary purpose.

Available Tools

7 tools
authenticateA
Idempotent
Inspect

MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header Authorization: Bearer <token> for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: "" } after the user pastes, or with no args to get the link.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses meaningful behavior beyond the annotations: permanent non-expiring header connection vs session-only login. It also clarifies the token is a JWT and that calling with no args returns the login link, adding side-effect context beyond the idempotentHint and destructiveHint annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action, and every clause adds value: browser login, token copy, permanent vs session options, and no-args behavior. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple auth tool with one optional parameter and no output schema, the description covers the flow, token persistence options, and the two invocation modes. It does not describe return values or failure handling, but the tool is simple enough that this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries the burden. It explains the token parameter is a JWT, shows the exact invocation shape { token: "<jwt>" }, and states that omitting it yields the login link, which is meaningful semantic context beyond the raw optional string property.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description immediately states the tool performs authentication for MCP.AI with IDE agents, explaining the browser login and token copy flow. It names the concrete action 'log in in the browser, copy the access token,' which clearly distinguishes this auth/credential tool from sibling tools like connect and marketplace.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage modes: recommended permanent config header, session-only token paste, or no-args call to get a link. It does not explicitly contrast with alternatives such as connect, but the practical when-to-use guidance is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

connectA
Read-onlyIdempotent
Inspect

Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the tool is safe and non-mutating. The description adds valuable context beyond annotations by explaining the response structure (authenticated:true, empty pending[], connect_url) and the conditions under which each is returned. It does not contradict annotations and provides meaningful behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the primary purpose and then adding conditional behavior. Every sentence earns its place with no redundant or vague language. It is optimal in length for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, no output schema, and the annotations provide safety guarantees, the description fully covers what the agent needs to know: what it returns and how the returned values vary based on connection state. Siblings are not referenced, but the tool is self-contained and complete for its intended use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description does not need to explain parameters since there are none. The schema coverage is effectively complete (empty properties), and the description adds no parameter-specific information, which is appropriate for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: returning connection status and URLs. It specifies the behavior under different conditions (all providers connected vs. missing credentials), which distinguishes it from siblings like 'authenticate' or 'toolkit_info'. The verb 'returns' and resource 'connection status and URLs' are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: whenever connection status is needed. It provides clear context by describing the two possible response scenarios, but it does not explicitly mention alternatives or when not to use it. Since the purpose is obvious and siblings are clearly different (e.g., authenticate for login), the implicit guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contas_cemig_download_consultarB
Read-onlyIdempotent
Inspect

Cemig: Download de Contas, consulta em fonte oficial. Hospedado pela plataforma, sem credenciais da plataforma, pague por consulta com crédito pré-pago. Consulta informação de fontes e órgãos oficiais brasileiros (a mesma disponível ao cidadão), não é dado sigiloso. O cliente é o controlador dos dados e responde pela finalidade legítima (LGPD).

ParametersJSON Schema
NameRequiredDescriptionDefault
cpfNo
cnpjNo
emailNo
senhaYes
numero_instalacaoNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive behavior; the description adds meaningful context: per-query prepaid charges, no platform credentials, official non-confidential data, and LGPD controller responsibilities. No contradiction with annotations, but it does not explain how 'senha' is used or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the main action, and includes relevant payment/legal context. The LGPD clause adds some boilerplate, but overall the structure is efficient and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite strong annotations and some high-level context, the tool has five undocumented parameters and no output schema. The description omits how to supply identifying information or what the downloaded/consulted result looks like, leaving a significant invocation gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain CPF, CNPJ, email, senha, or numero_instalacao. With five parameters and no schema-level descriptions, the description fully fails to compensate for the missing parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Cemig: Download de Contas, consulta em fonte oficial', clearly identifying the resource (Cemig bills) and the action (download/consult). It is distinguishable from the sibling tools, though 'contas' could be read as 'accounts' rather than 'bills', so it stops short of full clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives useful context: use this tool to query official Brazilian Cemig data, using prepaid credit and without platform credentials. It does not explicitly state when not to use it or name alternative query tools, but the provided context is clear enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

marketplaceAInspect

The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like "find an MCP that does X", "consulta um CPF", "is there a tool for Y". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/ link that opens without login.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
actionNosearch
mcp_idNo
messageNo
tool_idNo
argumentsNo{}
immediateNo
tier_slugNo
prompt_bodyNo
prompt_slugNo
prompt_toolNo
prompt_varsNo{}
conversationNo[]
prompt_titleNo
request_nameNo
cancel_reasonNo
cancel_commentNo
prompt_targetsNo
report_contextNo
prompt_categoryNo
request_detailsNo
prompt_descriptionNo
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses behavioral traits far beyond the sparse annotations (openWorldHint, readOnlyHint=false): one-off execution 'without adding the MCP to the toolkit,' the retry-after-auth pattern with connect/checkout links, and owner/admin permission requirements for writes. It falls just short of 5 because idempotency/retry semantics after a failed invoke are implied but not explicit, and the mixed use of Portuguese ('consulta um CPF', 'pontualmente') adds minor ambiguity for a global audience.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information density is high but the entire description is a single run-on paragraph with no bullets, headers, or line breaks. The 'KEY:' inline callout attempts signposting but gets lost in the wall of text. Every sentence arguably earns its place, but the delivery penalizes scannability — an agent must parse a ~400-word monologue to find the invoke/install distinction buried in the middle. Structure does not equal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an extraordinarily complex tool (14 actions, 23 params, auth flows, billing, permissions, plus a secondary prompt-library subsystem), the description covers an impressive surface: the full MCP lifecycle, permission model, auth/checkout edge cases, and the prompt library's variable substitution. Gaps remain — no disambiguation of 'resume', no explicit mention of what search returns when nothing matches, and the permission model for prompts vs MCPs is conflated — but for the complexity, this approaches completeness without an output schema or richer annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description carries the full burden — and it largely delivers. The action enum is almost entirely deciphered (each major value: search, describe, invoke, install, subscribe, cancel, request_mcp, and all three prompt_* verbs are explained in context), and prompt_vars maps to {{variables}} substitution. However, with 23 total parameters, several (tier_slug, immediate, conversation, request_name, prompt_targets) receive no semantic coverage, forcing the agent to guess about optional behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening thesis — 'The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them' — clearly states verb+resource and positions it as the canonical marketplace. However, the tool's scope sprawls across catalog search, one-off invocation, installation, billing, and a separate prompt library, which slightly dilutes a single crisp purpose and makes it harder to distinguish its boundary from siblings at a glance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Exceptional when-to-use guidance: explicitly contrasts invoke vs install ('Use install only to make an MCP PERMANENT... prefer invoke for a single/occasional use'), details the search→describe→invoke core flow, and names alternatives for non-matches (report_bug, request_mcp, subscribe/cancel). This is a textbook example of usage-guidance that no agent could mistake.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_bugA
Idempotent
Inspect

Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNo
messageYes
conversationNo[]
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose idempotentHint=true, destructiveHint=false, and readOnlyHint=false. The description adds only that a conversation should be included for reproduction, which is more of a parameter instruction than a behavioral disclosure. It does not contradict annotations and provides minimal extra behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences front-load the purpose and give one essential instruction. There is no repetition of schema fields or annotations, and every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter tool with no output schema, the description covers purpose and one parameter. However, it omits the context parameter, does not clarify the conversation field's string encoding, and provides no expectations about results or side effects. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 mentions 'message' implicitly and instructs to include the 'conversation array', but the schema types conversation as a string, creating a potentially misleading mismatch. The optional 'context' parameter is not mentioned at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Report') and resource ('a bug, missing feature, or send feedback'), clearly distinguishing this from unrelated sibling tools like authenticate or marketplace. It is immediately obvious what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states clear contexts for use: reporting bugs, missing features, or sending feedback. It does not explicitly name alternatives or exclusions, but the sibling tools are unrelated, so the usage context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

show_versionA
Read-onlyIdempotent
Inspect

Show the current MCP platform and adapter versions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, idempotentHint=true). The description adds the specific detail that it reports both platform and adapter versions, which is extra behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no redundant information. It front-loads the purpose and is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only, idempotent tool with no output schema, the description covers the purpose and output scope (platform and adapter versions). Minor details like return format are absent, but given the strong annotations and simplicity, the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so parameter semantics are inherently trivial. The description fully explains what the tool does, and with no parameters, there is no need to elaborate on inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool shows the current MCP platform and adapter versions—a specific verb and resource. This clearly distinguishes its purpose from sibling tools like authenticate, connect, and report_bug, which serve different functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when version information is needed) but does not explicitly state alternatives or when not to use it. Given the tool's simplicity, the implied usage is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

toolkit_infoA
Read-onlyIdempotent
Inspect

Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, non-mutating read. The description adds the exact scope of what the tool reports (current state) but nothing about latency, freshness, or potential failures, which is acceptable for a simple info-gathering tool with strong annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, direct, and front-loaded with the verb 'Returns' and the resource 'current toolkit state'. It efficiently lists the key data points without extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (no params, no output schema) and annotations provide safety coverage. The description sufficiently explains what the return value contains. Missing details like the exact format of output could be a minor gap, but given the complexity, it is complete for the intended use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the input schema is trivially documented (100% coverage). The description adds value by explaining what the tool returns, which is the semantic content an agent needs to interpret the output. Since there are no parameters to describe, a baseline of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the current toolkit state and enumerates the specific pieces of information it provides (installed MCPs, connection status, accounts, catalog tool counts). This is specific and distinct from siblings like authenticate or show_version, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies it should be used when you need an overview of the toolkit's state registry, which serves as a good context for when to call it. It does not explicitly mention alternatives or when not to use it, but with zero parameters and a clear purpose, this is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    -
    quality
    C
    maintenance
    MCP server for professionals to consult and download Cemig electricity bills from official sources, with prepaid credit per query. Read-only and works with any MCP client over HTTP.
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Enables users to consult and download second copies (2ª via) of Comgás gas bills from the official source via a read-only tool, with prepaid per-query credit.
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Enables consultation of Enel RJ electricity bills through official sources, featuring download and OCR capabilities. It is a read-only MCP server that works with any MCP-compatible client, using prepaid credits.
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    This MCP server provides a single read-only tool to query official CPFL (electric utility) bill download data via a hosted, prepaid service without requiring platform credentials.
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.