diff --git a/Changes b/Changes
index d41938b..4a39e12 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
 # version 1.4
 
 - Reenable and update search POST tests [AI-assisted]
+- Add a test for show-tokens param in match info web-service.
 
 # version 1.3
 
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/MatchInfoControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/MatchInfoControllerTest.java
index 41b27f7..2bf3762 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/MatchInfoControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/MatchInfoControllerTest.java
@@ -19,6 +19,40 @@
 
 public class MatchInfoControllerTest extends SpringJerseyTest {
 
+	 @Test
+	    public void testGetMatchInfoShowTokens () throws KustvaktException {
+	        Response response = target().path(API_VERSION).path("corpus")
+	                .path("GOE").path("AGA").path("01784").path("p4145-4146")
+	                .queryParam("foundry", "opennlp")
+	                .queryParam("show-tokens", "true")
+	                .request().get();
+	        assertEquals(Status.OK.getStatusCode(), response.getStatus());
+	        String entity = response.readEntity(String.class);
+	        JsonNode node = JsonUtils.readTree(entity);
+	        assertNotNull(node);
+	        
+	        // Check expected JSON structure
+	        assertTrue(node.at("/hasSnippet").asBoolean());
+	        assertTrue(node.at("/hasTokens").asBoolean());
+	        
+	        // Check snippet contains expected content
+	        String snippet = node.at("/snippet").asText();
+	        assertNotNull(snippet);
+	        assertTrue(snippet.contains("<span class=\"context-left\"></span><span class=\"match\">"));
+	        assertTrue(snippet.contains("<span title=\"opennlp/p:PPER\">es</span>"));
+	        assertTrue(snippet.contains("<mark><span title=\"opennlp/p:NN\">Wasser</span></mark>"));
+	        
+	        // Check tokens match array
+	        JsonNode tokensMatch = node.at("/tokens/match");
+	        assertNotNull(tokensMatch);
+	        assertTrue(tokensMatch.isArray());
+	        assertEquals(29, tokensMatch.size());
+	        assertEquals("es", tokensMatch.get(0).asText());
+	        assertEquals("war", tokensMatch.get(1).asText());
+	        assertEquals("Wasser", tokensMatch.get(20).asText());
+	        assertEquals("erreichten", tokensMatch.get(28).asText());
+	    }
+	 
     @Test
     public void testGetMatchInfoPublicCorpus () throws KustvaktException {
         Response response = target().path(API_VERSION).path("corpus")
@@ -137,4 +171,4 @@
                         + "match-GOE/AGD/00000-p75-76 is not allowed.",
                 node.at("/errors/0/1").asText());
     }
-}
+}
\ No newline at end of file
