Servidor MCP

KnowMapped

com.knowmapped/mcp
Conocimiento y documentación Productividad Público y accesible MCP 2025-11-25

Qué hace este MCP

Searches, retrieves, creates, and atomically updates visual knowledge maps and their nodes, edges, layouts, and revisions.

confirm_knowmapped_map_creation
Confirm KnowMapped map creation
Transactionally confirm a preflighted creation by draft ID. Success definitively returns map_id and revision. A failed transaction preserves the draft for retry, and retrying a committed success returns the same result without charging again. Use get_knowmapped_map_creation_result after a timeout or malformed response.
Idempotente
Esquema de entrada
{'type': 'object', 'title': 'confirm_knowmapped_map_creationArguments', 'required': ['draft_id'], 'properties': {'draft_id': {'type': 'string', 'title': 'Draft Id'}, 'confirm_credit_use': {'type': 'boolean', 'title': 'Confirm Credit Use', 'default': False}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
create_knowmapped_map
Create a KnowMapped map
Validate or create a KnowMapped graph. Specify requested layout only as top-level graph.layout_intent. When omitted, requested_layout and resolved_strategy are smart, but [0,0] placeholders are retained for the map client to lay out on first draw; layout_application is client-first-draw. Complete explicit coordinates are preserved instead. Set validate_only=true to check the exact final graph schema, layout, capacity, links, and credits without creating a map, charging credits, or reserving the idempotency key. For credit-bearing creation, show the quoted charge, then confirm the retained draft only after explicit approval.
Idempotente
Esquema de entrada
{'type': 'object', 'title': 'create_knowmapped_mapArguments', 'required': ['graph', 'idempotency_key'], 'properties': {'graph': {'type': 'object', 'examples': [{'edges': [{'id': 'source-review', 'label': 'informs', 'source': 'source', 'target': 'review'}], 'nodes': [{'id': 'source', 'label': 'Source'}, {'id': 'review', 'label': 'Review'}], 'title': 'Research flow', 'layout_intent': 'left-to-right'}], 'required': ['nodes', 'edges'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}, 'edges': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'source', 'target'], 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}, 'style': {'type': 'object'}, 'source': {'type': 'string'}, 'target': {'type': 'string'}, 'routing': {'type': 'string'}, 'strength': {'type': 'string'}, 'semantic_data': {'type': 'object'}}, 'additionalProperties': False}}, 'nodes': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label'], 'properties': {'id': {'type': 'string'}, 'icon': {'type': 'string'}, 'label': {'type': 'string'}, 'is_core': {'type': 'boolean'}, 'position': {'type': 'object'}, 'resources': {'type': 'array'}, 'importance': {'type': 'string'}, 'description': {'type': 'string'}, 'semantic_data': {'type': 'object'}}, 'additionalProperties': False}}, 'title': {'type': 'string', 'minLength': 1}, 'description': {'type': 'string'}, 'presentation': {'type': 'object', 'description': 'Non-layout visual settings. Layout belongs in top-level layout_intent.', 'additionalProperties': True}, 'layout_intent': {'enum': ['smart', 'left-to-right', 'top-to-bottom', 'radial', 'clustered', 'grid', 'hierarchical', 'declutter', 'manual'], 'type': 'string', 'default': 'smart', 'description': 'Requested semantic layout. Use this exact top-level field. If omitted, KnowMapped automatically applies Smart layout unless every node supplies explicit x/y coordinates; complete explicit coordinates are preserved as manual positioning.'}}, 'additionalProperties': False}, 'validate_only': {'type': 'boolean', 'title': 'Validate Only', 'default': False}, 'idempotency_key': {'type': 'string', 'title': 'Idempotency Key'}, 'confirm_credit_use': {'type': 'boolean', 'title': 'Confirm Credit Use', 'default': False}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
get_knowmapped_layout_summary
Get KnowMapped layout summary
Return layout bounds and graph statistics without returning graph content.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'title': 'get_knowmapped_layout_summaryArguments', 'required': ['map_id'], 'properties': {'map_id': {'type': 'string', 'title': 'Map Id'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
get_knowmapped_map
Get a KnowMapped map
Retrieve an authorized map with independent node_offset, edge_offset, and page_size parameters. Canonical IDs are always retained in projected nodes and edges even when include_nodes or include_edges omits id. Use summary for statistics without graph content or compact for token-efficient fields. Search results return copy-safe map references so UUIDs should not be typed manually.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'title': 'get_knowmapped_mapArguments', 'required': ['map_id'], 'properties': {'map_id': {'type': 'string', 'title': 'Map Id'}, 'include': {'enum': ['full', 'compact', 'summary'], 'type': 'string', 'title': 'Include', 'default': 'full'}, 'page_size': {'type': 'integer', 'title': 'Page Size', 'default': 100, 'maximum': 200, 'minimum': 1, 'examples': [100], 'description': 'Maximum nodes and maximum edges returned in this page (1-200).'}, 'edge_offset': {'type': 'integer', 'title': 'Edge Offset', 'default': 0, 'minimum': 0, 'examples': [0, 100], 'description': 'Zero-based offset for the independently paginated edge collection.'}, 'node_offset': {'type': 'integer', 'title': 'Node Offset', 'default': 0, 'minimum': 0, 'examples': [0, 100], 'description': 'Zero-based offset for the independently paginated node collection.'}, 'include_edges': {'type': 'string', 'title': 'Include Edges', 'default': ''}, 'include_nodes': {'type': 'string', 'title': 'Include Nodes', 'default': ''}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
get_knowmapped_map_adjacency
Get KnowMapped map adjacency
Return one concept and its directly connected concepts and relationships without retrieving the full graph. Provide node_id or an exact unique label.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'title': 'get_knowmapped_map_adjacencyArguments', 'required': ['map_id'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 100}, 'map_id': {'type': 'string', 'title': 'Map Id'}, 'offset': {'type': 'integer', 'title': 'Offset', 'default': 0}, 'node_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Node Id', 'default': None}, 'exact_label': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Exact Label', 'default': None}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
get_knowmapped_map_creation_result
Get a KnowMapped map creation result
Recover the definitive state of a map creation without creating a map or charging credits. Provide exactly one draft_id or the original idempotency_key. A succeeded result includes the canonical map ID and revision.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'title': 'get_knowmapped_map_creation_resultArguments', 'properties': {'draft_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Draft Id', 'default': None}, 'idempotency_key': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Idempotency Key', 'default': None}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
get_knowmapped_update_schema
Get the KnowMapped update schema
Return the authoritative, versioned schema and examples for atomic KnowMapped map patches. Call this before constructing an update instead of guessing operation or field names.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'title': 'get_knowmapped_update_schemaArguments', 'properties': {}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
preflight_knowmapped_map_creation
Preflight KnowMapped map creation
Check eligibility and credits, or retain a fully validated graph as a short-lived draft. The exact creation layout field is top-level graph.layout_intent, for example left-to-right. If omitted, Smart is the intent but [0,0] placeholders remain until the map client detects them and applies Smart on first draw; the response reports layout_application=client-first-draw. Complete explicit coordinates are preserved. Fields named layout, layout_type, or strategy are rejected. Drafts do not reserve credits and can be confirmed by draft ID without resending the graph.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'title': 'preflight_knowmapped_map_creationArguments', 'properties': {'graph': {'anyOf': [{'type': 'object', 'examples': [{'edges': [{'id': 'source-review', 'label': 'informs', 'source': 'source', 'target': 'review'}], 'nodes': [{'id': 'source', 'label': 'Source'}, {'id': 'review', 'label': 'Review'}], 'title': 'Research flow', 'layout_intent': 'left-to-right'}], 'required': ['nodes', 'edges'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}}, 'edges': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'source', 'target'], 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}, 'style': {'type': 'object'}, 'source': {'type': 'string'}, 'target': {'type': 'string'}, 'routing': {'type': 'string'}, 'strength': {'type': 'string'}, 'semantic_data': {'type': 'object'}}, 'additionalProperties': False}}, 'nodes': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label'], 'properties': {'id': {'type': 'string'}, 'icon': {'type': 'string'}, 'label': {'type': 'string'}, 'is_core': {'type': 'boolean'}, 'position': {'type': 'object'}, 'resources': {'type': 'array'}, 'importance': {'type': 'string'}, 'description': {'type': 'string'}, 'semantic_data': {'type': 'object'}}, 'additionalProperties': False}}, 'title': {'type': 'string', 'minLength': 1}, 'description': {'type': 'string'}, 'presentation': {'type': 'object', 'description': 'Non-layout visual settings. Layout belongs in top-level layout_intent.', 'additionalProperties': True}, 'layout_intent': {'enum': ['smart', 'left-to-right', 'top-to-bottom', 'radial', 'clustered', 'grid', 'hierarchical', 'declutter', 'manual'], 'type': 'string', 'default': 'smart', 'description': 'Requested semantic layout. Use this exact top-level field. If omitted, KnowMapped automatically applies Smart layout unless every node supplies explicit x/y coordinates; complete explicit coordinates are preserved as manual positioning.'}}, 'additionalProperties': False}, {'type': 'null'}], 'title': 'Graph', 'default': None}, 'idempotency_key': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Idempotency Key', 'default': None}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
search_knowmapped_maps
Search KnowMapped maps
Search maps available to the connected KnowMapped account. Use this when a user refers to a saved map or wants to find prior concepts; existing ownership and sharing permissions are enforced server-side.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'title': 'search_knowmapped_mapsArguments', 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 20}, 'query': {'type': 'string', 'title': 'Query', 'default': ''}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
update_knowmapped_map
Update a KnowMapped map
Validate or atomically update an editable map with one mixed patch. Accepted operations are update_map, add_node, update_node, remove_node, add_edge, update_edge, remove_edge, replace_edges, and layout_nodes; get_knowmapped_update_schema is the authoritative versioned contract. Use id for identifiers, title for the map title, and layout_nodes with strategy, spacing, groups, and optional flow. Node references accept IDs, earlier temp_id values, or exact unique labels. Edge references accept IDs or semantic source/target/current-relationship matches. validate_only returns a corrected executable normalized_patch, all detectable errors and warnings, layout positions and bounds, a patch summary, publication state, and current revision without changing data. On a stale write, revalidate the same patch at current_revision, then submit the returned normalized_patch.
Destructivo Idempotente
Esquema de entrada
{'type': 'object', 'title': 'update_knowmapped_mapArguments', 'required': ['map_id', 'expected_revision', 'operations', 'idempotency_key'], 'properties': {'map_id': {'type': 'string', 'title': 'Map Id'}, 'operations': {'type': 'array', 'items': {'$id': 'https://knowmapped.com/schemas/mcp/map-patch/2026-08-22.3', 'oneOf': [{'type': 'object', 'examples': [{'op': 'add_edge', 'label': 'supports', 'source': {'label': 'Source material'}, 'target': 'new-concept'}], 'required': ['op', 'source', 'target'], 'properties': {'op': {'const': 'add_edge'}, 'label': {'type': 'string'}, 'style': {'type': 'object'}, 'source': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'target': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'routing': {'type': 'string'}, 'strength': {'type': 'string'}, 'semantic_data': {'type': 'object'}}, 'additionalProperties': False}, {'type': 'object', 'examples': [{'op': 'add_node', 'label': 'New concept', 'temp_id': 'new-concept'}], 'required': ['op', 'label', 'temp_id'], 'properties': {'op': {'const': 'add_node'}, 'icon': {'type': 'string'}, 'label': {'type': 'string'}, 'is_core': {'type': 'boolean'}, 'temp_id': {'type': 'string'}, 'position': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number'}, 'y': {'type': 'number'}}, 'additionalProperties': False}, 'resources': {'type': 'array'}, 'importance': {'type': 'string'}, 'description': {'type': 'string'}, 'semantic_data': {'type': 'object'}}, 'additionalProperties': False}, {'type': 'object', 'examples': [{'op': 'layout_nodes', 'flow': 'Source → Draft → Concepts → Review', 'groups': {'Evidence': [{'label': 'Source material'}]}, 'spacing': 220, 'strategy': 'hierarchical'}], 'required': ['op', 'strategy'], 'properties': {'op': {'const': 'layout_nodes'}, 'flow': {'anyOf': [{'type': 'string'}, {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}}], 'description': 'Optional reading order, either concept references or labels separated by → or ->.'}, 'groups': {'type': 'object', 'additionalProperties': {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}}}, 'spacing': {'type': 'number', 'maximum': 800, 'minimum': 80}, 'strategy': {'enum': ['smart', 'left-to-right', 'top-to-bottom', 'manual', 'grid', 'radial', 'hierarchical', 'clustered', 'declutter'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'examples': [{'id': 'relationship-id', 'op': 'remove_edge', 'confirm': True}], 'required': ['op', 'confirm', 'id'], 'properties': {'id': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'object', 'required': ['source', 'target'], 'properties': {'source': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'target': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'relationship': {'type': 'string'}}, 'description': 'Semantic relationship match. relationship matches the current edge label when supplied.', 'additionalProperties': False}]}, 'op': {'const': 'remove_edge'}, 'confirm': {'const': True}}, 'additionalProperties': False}, {'type': 'object', 'examples': [{'id': {'label': 'Obsolete concept'}, 'op': 'remove_node', 'confirm': True}], 'required': ['op', 'confirm', 'id'], 'properties': {'id': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'op': {'const': 'remove_node'}, 'confirm': {'const': True}}, 'additionalProperties': False}, {'type': 'object', 'examples': [{'op': 'replace_edges', 'add': [{'label': 'produces', 'source': {'label': 'Draft'}, 'target': {'label': 'Concepts'}}], 'remove': [{'source': {'label': 'Draft'}, 'target': {'label': 'Review'}, 'relationship': 'precedes'}], 'confirm': True}], 'required': ['op', 'add', 'confirm', 'remove'], 'properties': {'op': {'const': 'replace_edges'}, 'add': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'target'], 'properties': {'label': {'type': 'string'}, 'style': {'type': 'object'}, 'source': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'target': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'routing': {'type': 'string'}, 'strength': {'type': 'string'}, 'semantic_data': {'type': 'object'}}, 'additionalProperties': False}}, 'remove': {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'object', 'required': ['source', 'target'], 'properties': {'source': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'target': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'relationship': {'type': 'string'}}, 'description': 'Semantic relationship match. relationship matches the current edge label when supplied.', 'additionalProperties': False}]}}, 'confirm': {'const': True}}, 'additionalProperties': False}, {'type': 'object', 'examples': [{'id': 'relationship-id', 'op': 'update_edge', 'label': 'strengthens'}], 'required': ['op', 'id'], 'properties': {'id': {'anyOf': [{'type': 'string', 'minLength': 1}, {'type': 'object', 'required': ['source', 'target'], 'properties': {'source': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'target': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'relationship': {'type': 'string'}}, 'description': 'Semantic relationship match. relationship matches the current edge label when supplied.', 'additionalProperties': False}]}, 'op': {'const': 'update_edge'}, 'label': {'type': 'string'}, 'style': {'type': 'object'}, 'source': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'target': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'routing': {'type': 'string'}, 'strength': {'type': 'string'}, 'semantic_data': {'type': 'object'}}, 'additionalProperties': False}, {'type': 'object', 'examples': [{'op': 'update_map', 'title': 'Revised map title'}], 'required': ['op'], 'properties': {'op': {'const': 'update_map'}, 'title': {'type': 'string'}, 'description': {'type': 'string'}, 'view_settings': {'type': 'object'}}, 'additionalProperties': False}, {'type': 'object', 'examples': [{'id': {'label': 'Source material'}, 'op': 'update_node', 'description': 'Revised description'}], 'required': ['op', 'id'], 'properties': {'id': {'anyOf': [{'type': 'string', 'minLength': 1, 'description': 'Canonical node ID or a temp_id declared by add_node.'}, {'type': 'object', 'required': ['label'], 'properties': {'label': {'type': 'string', 'minLength': 1}}, 'additionalProperties': False}]}, 'op': {'const': 'update_node'}, 'icon': {'type': 'string'}, 'label': {'type': 'string'}, 'is_core': {'type': 'boolean'}, 'position': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number'}, 'y': {'type': 'number'}}, 'additionalProperties': False}, 'resources': {'type': 'array'}, 'importance': {'type': 'string'}, 'description': {'type': 'string'}, 'semantic_data': {'type': 'object'}}, 'additionalProperties': False}], 'discriminator': {'propertyName': 'op'}, 'schema_version': '2026-08-22.3'}, 'title': 'Operations', 'examples': [[{'op': 'add_node', 'label': 'New finding', 'temp_id': 'finding-1', 'position': {'x': 100, 'y': 200}}, {'op': 'add_edge', 'label': 'supports', 'source': {'label': 'Existing concept'}, 'target': 'finding-1'}], [{'op': 'layout_nodes', 'spacing': 220, 'strategy': 'hierarchical'}], [{'id': {'label': 'Obsolete concept'}, 'op': 'remove_node', 'confirm': True}]], 'description': 'One atomic patch. Node references accept IDs, declared temp IDs, or {"label":"Exact unique label"}.'}, 'validate_only': {'type': 'boolean', 'title': 'Validate Only', 'default': False}, 'idempotency_key': {'type': 'string', 'title': 'Idempotency Key'}, 'expected_revision': {'type': 'integer', 'title': 'Expected Revision'}}}
Esquema de salida
{'type': 'object', 'additionalProperties': True}
Añadido
update_knowmapped_map
17 de September de 2026 a las 12:35
Añadido
get_knowmapped_map_creation_result
17 de September de 2026 a las 12:35
Añadido
confirm_knowmapped_map_creation
17 de September de 2026 a las 12:35
Añadido
create_knowmapped_map
17 de September de 2026 a las 12:35
Añadido
preflight_knowmapped_map_creation
17 de September de 2026 a las 12:35
Añadido
get_knowmapped_layout_summary
17 de September de 2026 a las 12:35
Añadido
get_knowmapped_map_adjacency
17 de September de 2026 a las 12:35
Añadido
get_knowmapped_map
17 de September de 2026 a las 12:35
Añadido
search_knowmapped_maps
17 de September de 2026 a las 12:35
Añadido
get_knowmapped_update_schema
17 de September de 2026 a las 12:35