Prefeitura MG Contagem: NFS-e (Nota Fiscal Eletrônica de Serviços)
Server Details
Prefeitura MG Contagem: NFS-e (Nota Fiscal Eletrônica de Serviços), official-source lookup. Platform
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- mcp-dir/pref_mg_contagem_nfs-mcp
- GitHub Stars
- 0
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 4.1/5 across 7 of 7 tools scored. Lowest: 3.3/5.
Several tools serve overlapping purposes: 'authenticate', 'connect', 'marketplace', 'report_bug', 'show_version', and 'toolkit_info' are all generic platform/management tools not specific to NFS-e. Only 'pref_mg_contagem_nfs_consultar' is domain-specific, and 'marketplace''s broad scope (search, describe, invoke, list_tools, subscribe, etc.) makes it ambiguous with many other tools.
Tool names mix English verbs (authenticate, connect, report_bug) with Portuguese domain-specific names (pref_mg_contagem_nfs_consultar) and use inconsistent styles (snake_case for domain, camelCase for marketplace tools like 'list_tools'). There is no coherent naming pattern across the set.
7 tools is a reasonable number, but the count is bloated by generic platform tools (authenticate, connect, report_bug, show_version, toolkit_info) that are not specific to the server's purpose. Only one tool is actually about NFS-e, making the set feel over-padded for its domain.
The server's purpose is NFS-e consultation, but only one tool ('pref_mg_contagem_nfs_consultar') directly addresses that. There are no tools for related operations like issuing, canceling, or listing NFS-e; the other tools are irrelevant to the domain. This leaves significant gaps for any NFS-e workflow.
Available Tools
7 toolsauthenticateAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by explaining the difference between permanent (header) and session-only (token passed) authentication, and that no args triggers a link response. Annotations already mark idempotent, which is consistent.
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 moderately sized with a clear front-loaded purpose, followed by two concrete usage options. Every sentence conveys useful information, though it could be slightly tighter.
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?
The description covers the authentication flow comprehensively for a simple tool, including both permanent and session-based methods and the no-arg behavior. It omits output/error details, but no output schema exists and the tool's purpose is clear.
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 provides no description for the optional token parameter, but the description fully explains its semantics: calling with { token: "<jwt>" } after user pastes, or omitting it to receive the link. This compensates for the 0% schema coverage.
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 function: login in the browser, copy the access token, and either configure a permanent header or provide a session token. It uses specific verbs and resources, making the purpose unmistakable.
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?
It explicitly describes two usage paths: adding the token as a permanent header in server config, or calling with a token for session-only login, and calling with no args to retrieve the login link. This gives the agent clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connectARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint: true, destructiveHint: false) already indicate a safe, read-only operation. The description adds concrete behavioral details: it returns authenticated:true and empty pending[] when all providers connected, and connect_url otherwise. This goes beyond annotations and clarifies the exact output states.
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, highly efficient. Clearly explains purpose and conditional behavior with no fluff.
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?
Tool has no parameters and no output schema, but the description explains the two possible return states and what URLs are provided. That is sufficient for an agent to know what to expect. 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?
The tool has zero parametersached. With 0 parameters, baseline is 4. No additional parameter info needed.
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 function: returns connection status and URLs. It specifies what it returns in different states (authenticated vs. pending), which distinguishes it from sibling tools like authenticate (which presumably performs authentication) and other status/utility tools.
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 by outlining what the response looks like under different conditions, but does not explicitly state when to use it versus alternatives like authenticate. It gives context about when credentials are missing, which indirectly guides usage, but lacks direct comparison to siblings.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| action | No | search | |
| mcp_id | No | ||
| message | No | ||
| tool_id | No | ||
| arguments | No | {} | |
| immediate | No | ||
| tier_slug | No | ||
| prompt_body | No | ||
| prompt_slug | No | ||
| prompt_tool | No | ||
| prompt_vars | No | {} | |
| conversation | No | [] | |
| prompt_title | No | ||
| request_name | No | ||
| cancel_reason | No | ||
| cancel_comment | No | ||
| prompt_targets | No | ||
| report_context | No | ||
| prompt_category | No | ||
| request_details | No | ||
| prompt_description | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, openWorldHint=true, so the description correctly implies operations can cause changes but also handles requests. It discloses behavioral traits beyond annotations: invoke works without install, one-off runs without bloating toolkit, returns connect link for credentials, checkout/top-up for payment, and writes require workspace owner/admin. This is rich context, though annotations already signal mutability, so a 4 seems appropriate.
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 dense paragraph packed with information, but it's well-structured with a clear flow from search to invoke, and covers alternative actions. It's front-loaded with the core purpose and then expands. Slightly long for one paragraph, but no repetition or fluff. A 4 seems right.
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 (23 params, no output schema), the description covers the essential flows, permissions, and special behaviors (invoke without install, payment/credential links, prompt library). It doesn't explain all parameters or the prompt library in depth, but given the constraints, it's fairly complete. Without output schema, it would be nice to mention return formats, but the description is substantial.
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 clarify parameters. It explains the 'action' enum values (search, describe, invoke, install, etc.) and mentions 'mcp_id', 'tool_id', 'arguments' in the flow, but doesn't detail many other params like prompt_* fields or limit. It adds meaning to key parameters but not all. With 0% schema coverage, the description compensates partially, so a conservative 3 is fair.
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 identifies the tool as the official mcp.ai marketplace providing a catalog of every MCP/tool and the way to run them. It explicitly lists the core actions (search, describe, invoke) and expands on the two main use cases (discovery and execution). It differentiates from siblings by clarifying it's about the marketplace while other tools handle authentication or specific 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 gives explicit guidance on when to use invoke vs install (prefer invoke for one-off use, install only for permanent additions) and explains the flow (search → describe → invoke). It also mentions when to use list_tools (what is callable right now) and alternatives like request_mcp for new builds. This is a strong 5, covering when-not as well.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pref_mg_contagem_nfs_consultarBRead-onlyIdempotentInspect
Prefeitura MG Contagem: NFS-e (Nota Fiscal Eletrônica de Serviços), 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).
| Name | Required | Description | Default |
|---|---|---|---|
| declaracao | Yes | ||
| numero_nota | Yes | ||
| codigo_verificacao | Yes | ||
| cpf_cnpj_prestador | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, destructiveHint), the description discloses additional behavioral traits such as the payment per query, the absence of platform credentials, and the non-confidential nature of the data. It also mentions LGPD compliance responsibilities, adding meaningful transparency.
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 paragraph but includes some redundancy, such as repeating the notion of official sources and mentioning similar details twice. It is not excessively long, but could be more concise while still delivering the key information.
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 annotations already provide basic flags, the description adds important context such as the official source, payment model, data sensitivity, and legal responsibility. It covers the essential operational and compliance aspects, though it omits parameter details, which is acceptable since the question focuses on overall 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?
The description does not explain any of the input parameters (declaracao, numero_nota, codigo_verificacao, cpf_cnpj_prestador). The schema provides no descriptions, and the text fails to add meaning or context for these fields, leaving parameter semantics entirely undocumented.
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 function: querying NFS-e (electronic service invoices) from the Contagem municipality in Minas Gerais, Brazil. It explicitly uses the verb 'consultar' and identifies the specific resource, distinguishing it from generic sibling tools like authenticate or connect.
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 some context about usage (e.g., prepaid credit, no platform credentials) but does not explicitly state when to use this tool versus alternatives. It lacks direct guidance on scenarios where this tool is preferred or when other tools should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_bugAIdempotentInspect
Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | ||
| message | Yes | ||
| conversation | No | [] |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds value by specifying that the conversation array should be included for reproduction, which explains a behavioral requirement. It does not contradict annotations and provides context beyond them.
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, two sentences, with the purpose front-loaded and a specific action instruction. No wasted words, and it covers both the what and a crucial how.
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 and existing annotations, the description is largely complete. It explains the core purpose and the key requirement for reproduction. It could optionally describe what happens after submission or the response format, but since no output schema exists, this is not strictly required. The lack of explanation for the 'context' parameter is a minor gap.
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 clarifies the 'conversation' parameter's purpose (array for reproduction), but does not explain 'context' or the format/type of conversation as a JSON-encoded string. The required 'message' parameter is self-evident, but 'context' remains undocumented. This partial explanation places it at a baseline of 3.
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: report a bug, missing feature, or send feedback. It uses a specific verb ('report') and resource ('bug') and is clearly distinct from sibling tools like authenticate or connect. It also mentions the key usage instruction about including the conversation array.
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 when to use: when reporting issues or sending feedback. It provides a specific guidance to include the conversation array for reproduction, giving context. However, it does not explicitly exclude alternative tools or mention when not to use it, but given the sibling tools, none is an obvious alternative for this purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_versionARead-onlyIdempotentInspect
Show the current MCP platform and adapter versions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
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 agent knows this is safe. However, the description adds no extra behavioral context beyond the annotations—no mention of return format, authentication, or any side effects. Hence, it does not build on 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of 10 words, with no filler or repetition. Every word contributes to conveying the tool's core function.
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 params, no output schema) and the safety annotations, the description provides sufficient context to understand what the tool does. It omits details like return format or authentication prerequisites, but these are not critical for a version-checking 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 tool takes zero parameters, and the schema covers this completely. Since there are no parameters to document, the baseline of 4 applies, and the description does not need to add parameter details.
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 'Show' and clearly identifies the resource ('current MCP platform and adapter versions'), making the tool's purpose immediately clear and distinct from the authentication/mutation siblings.
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 the tool is for retrieving version information, but offers no explicit guidance on when to use it over alternatives (e.g., toolkit_info) or any exclusions. The usage context is vague but not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toolkit_infoARead-onlyIdempotentInspect
Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description aligns with these. It adds useful behavioral context beyond the annotations by specifying the exact scope of state returned (installed MCPs, connection status, accounts, and tool counts), which helps the agent understand the tool's read-only nature and output scope.
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 tightly worded and front-loaded with the key verb ('Returns') and object ('current toolkit state'). The enumeration of returned content adds value without unnecessary elaboration.
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 zero-parameter, read-only introspection tool with good annotations, the description is largely sufficient. It explains the return content even though no output schema exists, but it does not elaborate on possible connection status values or the representation of accounts, which would enhance 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?
The tool has zero parameters, so the baseline is 4. There is no parameter ambiguity to resolve, and the description appropriately focuses on behavior rather than parameters that do not exist.
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 ('Returns') and clearly identifies the resource ('current toolkit state'), enumerating exactly what is included: installed MCPs, connection status, connected accounts, and catalog tool counts. It distinguishes itself from siblings like show_version and connect by focusing on broader toolkit state rather than version or connection actions.
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?
There is no explicit guidance on when to use this tool versus alternatives such as connect, authenticate, or show_version. The description implies it is for inspecting state, but it does not state exclusions, prerequisites, or preferred contexts.
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
- AlicenseNot gradedqualityCmaintenanceMCP server for querying official Campo Grande (MS) electronic service invoices (NFS-e) data in read-only mode, with a single consult tool and prepaid credit pricing.MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying official electronic service invoice (NFS-e) data from the Recife city government through a read-only, hosted MCP server with pay-per-use prepaid credits.MIT
- AlicenseNot gradedqualityCmaintenanceProvides read-only consultation of Rio de Janeiro's electronic service invoices (NFS-e) from official sources, with pay-per-use credits.MIT
- AlicenseNot gradedqualityCmaintenanceRead-only MCP server for consulting municipal electronic service invoices (NFS-e) from Sumaré, SP, through official sources, with a single query tool.MIT